<?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>147563</bug_id>
          
          <creation_ts>2015-08-03 10:34:34 -0700</creation_ts>
          <short_desc>[META] Implement Visual CSS Style Sidebar Panel</short_desc>
          <delta_ts>2018-10-25 01:31:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>
          <dependson>147570</dependson>
    
    <dependson>147572</dependson>
    
    <dependson>147576</dependson>
    
    <dependson>147578</dependson>
    
    <dependson>147579</dependson>
    
    <dependson>147711</dependson>
    
    <dependson>147712</dependson>
    
    <dependson>148021</dependson>
    
    <dependson>148022</dependson>
    
    <dependson>148101</dependson>
    
    <dependson>148102</dependson>
    
    <dependson>148103</dependson>
    
    <dependson>148104</dependson>
    
    <dependson>148105</dependson>
    
    <dependson>148106</dependson>
    
    <dependson>148107</dependson>
    
    <dependson>148110</dependson>
    
    <dependson>148114</dependson>
    
    <dependson>148147</dependson>
    
    <dependson>148153</dependson>
    
    <dependson>148160</dependson>
    
    <dependson>148161</dependson>
    
    <dependson>148185</dependson>
    
    <dependson>148187</dependson>
    
    <dependson>148231</dependson>
    
    <dependson>148242</dependson>
    
    <dependson>148243</dependson>
    
    <dependson>148254</dependson>
    
    <dependson>148264</dependson>
    
    <dependson>148269</dependson>
    
    <dependson>148308</dependson>
    
    <dependson>148310</dependson>
    
    <dependson>148314</dependson>
    
    <dependson>148351</dependson>
    
    <dependson>148678</dependson>
    
    <dependson>150494</dependson>
    
    <dependson>152631</dependson>
    
    <dependson>152653</dependson>
    
    <dependson>152972</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>agomez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jonowells</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114225</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 10:34:34 -0700</bug_when>
    <thetext>This is a tracking bug for implementing a Visual CSS style editor in the sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115212</commentid>
    <comment_count>1</comment_count>
      <attachid>258328</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-05 18:10:19 -0700</bug_when>
    <thetext>Created attachment 258328
[WIP] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116857</commentid>
    <comment_count>2</comment_count>
      <attachid>258799</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-11 21:29:03 -0700</bug_when>
    <thetext>Created attachment 258799
[WIP] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117612</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-14 00:35:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/22283930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472030</commentid>
    <comment_count>4</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 01:31:56 -0700</bug_when>
    <thetext>The Visual styles sidebar was removed in r236298 &lt;https://webkit.org/b/189807&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258328</attachid>
            <date>2015-08-05 18:10:19 -0700</date>
            <delta_ts>2015-08-11 21:29:03 -0700</delta_ts>
            <desc>[WIP] Patch</desc>
            <filename>project-v3.txt</filename>
            <type>text/plain</type>
            <size>273773</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDRjMGY0ZmMxNDYxYjkzNTQ4Y2Ni
OTY0MjU1YTY1ZjE2Zjg5MTI4ODEuLmFjMzM1OWFmZjZjNWExZTk2MzdiYjBiNTAxODgxY2M1ZDdh
OWI0YzkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzM0Mwp6Y21hKThaRVJDejZuXmA/
KFhHXzdRcFBPcDcpeTF1K3w5WXskMT5RNVY8SmZCbT5WTjhRZHI5aFlyQ31EXyVPMVcKekttdipo
O2whd2Y7MUdYSSFFRUZPaTRvV21fUkQwK3ste1doa0hrYjBqYyFJbDVHSjFVX085STlacz9FcC1n
fn5ACno9WHx7OW9Fd2pJLStyd2hJY0xpY3ZtR3FUbWF7alFuXm9nKUlqZHp8NDU9YCsoRmNGbmpH
V3VMdzVCZkJnVW90Mwp6QD93RH1mQzYzaylyKlFAcSRlYGVRP2pgI1MjWTB7dmRNZ2t6aV5oeyRM
T3YxKmRuYE9VTTVXU09XYks2KVdQfV8KeklncXs3MjljOGB7TEdUWU1yVkwrWFBzIzxkaGklUT1T
UD1LWWJBUSFoMGV4Vk9kIykyaVBzNUgxc3wrVnBPZEh3CnpeaWwxaE9vYyhNNUJkdng5RWNtT0Ru
blJEekNjWl8mc0IkfiNhUmFuVz1JRyt0Z2UtY05RU2AxU1J+QyNpVmlpVgp6bTMrRXptMF4rY24w
aD1XJE8zY18jNV58Y0BoczM2MW57JkQldVdEKlFEcEROQ3VKJGZCQ3lJXl8qRE1qWCY8OyYKeitV
QXNycW5DS3h5ZiRYfU5nSlEjYzhJdEkqZnljJWVhJmZfbF8+U1BHUHllQiFxI21Qb29AfnpAXzk3
VmN9aEwzCnoobEJjN0I4O2hiKihkT095UEAyQiNweEUyYzRJeTtBe2deTmU3WF4xTzRCfCFONDhe
RGFEbHYxI0NCZEBRZztFTAp6X01YPmF4bHJvV2Q1cDJIVn4tPyRzJnFXcFJXSGdaRl4zZURTJVR6
KHQyZ1FtK2VyZHlQQl9kanAkcDsqWXIkPFIKekZRKUdoMjlPZmdxZEd+IWZ6ckNOezRTSypuPDBU
enVvbjZGYU5TT3dEVDJuTEVDQ35WYzA0R0lGLXZ9VFNDJCotCnpJfVZjPF5YMGR4aTxSKEFxWk19
U2JWSXYlRShVKm4zMCFXcEFUMUJwPzY9N0RKYyNaMDNmWFhEM0hMV3p3TUJIegp6eClFX0VxNztX
diFSVUc7LUBma2RpbUlybj5VZ1R3MHxNSkJseypjSG9vWVcjM05SeTs9e3lRPSpIZzhIMWF3QyQK
el9ALSElITlAcCNRQUhpV3dkakdNMyQmbH5CSEZ9UHkyMnBhZ0xmZkB8SHs7X01SbDEybFVZNnxl
YUZ5JUkmQ3IpCnojJDNMSkNsWWtXcXZFZDFqVWNWOG8rMyN0Z1dHcTFsO3ZuZHI1SDh8QmBCbzk/
XlAyMnZqNGFxMzxzQGQxQHFXSgp6SkpneT1jPlJHcXlgNXNLO0lWYXQyZ2RmNmFzTUhVN0pmTndi
JWNjZDJxdmptKiske15WVFZjUExGdXdHWG4lTGEKemstJCk3OGNhYTwxQm5+bnlKMnVwUypyeSRw
aH00MXFTKmtHWiMoY21JI0khSTlpMXtfY0gtRlg9fl5veHpLVEg7CnpiZWVCPWBjZndaRFU9OTRA
IV9ZTVhWTyl9cXtNZjllOGJgbEEoVHdLZXh4RnU1SlNVSWIwR35LWTdwdVFAbmZDSwp6OThuYE0p
YXU5XzVxYHdrSz80RlZle1NYWGhKTSFJYnRRTCNEdT9gZCYzajwkUHpDPykzeVk/aCtGMllpUCNM
TVMKej5LQ219QEY9QCo9Z2NkYjRtY1hJbzA8Pn00aDxNOUVhUlRESWVKJE5UX2YwR0dAXzB7Nkgq
Y3xfQ2lJdWN2REVaCnoqPTd+NElydU8oRUo7ZXNacjEpRUlfPTstQy1JN3I+JC12X15lY3Z1Qm1k
R08zUC1Be19gPnRlOFlmTWlVUyotNwp6e2J1MUYocVp0NSNOV0pkKGc7UERtTyVMaEZUOClyI3Rv
Tk49PE1sKipObiNgKTN8cmszaWZkO2N0KXt6amhGRFoKek16YWlkK0x9N2tPMGdMUjJGbSQ2O3xI
PTtMd1hZbVZ0NlUhcnlvcFl5RStsUm1eQ1dUTmxNVmNlY1Q4NHprZ1g1CnpYOFUwNU18PCojaUsr
ZzxzTF41N0FrbVMwQjV9Pk5Oc1glO0hFfDhWNmU8Z1M2TlhDQVhfTWkoKjlZfXhILTx0Qwp6YWRk
NiFDeD0wTiFgUkpnSzc4fTg3R2BjKSY4PihuZmtMPkFrcUNfNXdrY19SPnojWXFQfVp7NCs9NzVm
KVhmQFQKeihxR0JmfEdMTG1LK31QSStvM3x6ZzB1KH5tJVQrS1A+QipMRndsPSUkRGNXVFYpezg5
UkJ1X1RYQFB4UHMtQUJfCnpffClLKDEqMkEjYEJhWDRgbWJ4K1Z2MDFLOSEhaEg+cXc7cVFFKnxU
Ul5uSWhIfHZVOGt3OEh3dmJ3RkxJNTJvdAp6VEc9WXNUb3tlZW55TiZSIylIQVhlVDVYNEZnQU9k
NFZrd2VMa3ljT1JTPGg8O1lBTkU4dGlJd2x+V3QrQUUrcDYKejZKZSRhTSNHVnNoV2hxckBTKX5l
QTRyZEdFPmMlUjglOTEobD5ueGhQPTE+VFpNVnUxS0ArKGNvLXkqb09wflVjCnopKzQlNUE/I25Z
SGcpM1JaaDQzaUFiSm5Wb28wNWVRbSZ1IVFsQUYtZV9MSDVjMzBZcVkwXkV9WVd2YH41NlYzZQpx
UU9lWSNYbFlQS01acHQwPDwpPDxwNnoyayptJWZjIyVGUis7VzlnITwlUGItcD8/OWUybj4oXwoK
ZGVsdGEgNDE2CnpjbVY7UjBibDtneGRoeioxRiozWXYtPVdtMCtYaX44bmVxNWdhZWE1OHhGSSM4
dWtVVmB5anZxbFZjPXV2JHJLSQp6MSt5KEg1KEpaTEZwYHNSR2pObWpGQzNGXkdvckl1SE05ZT5T
MkA1OXZ0PnQ0MWhjSjdXJkBNfFFWZiU4YnMmPXEKelFWXjRDYnJ6R2FidHNiJFIwZm0zUXdXbzNi
cnpGcml3PV91UVZeNENicmlGa1FGYTI4YEJWOyp0eUNoRGlCMWYmCnpwSCMzVWxXbHFrdm08Jjgx
KyNzQngmeU9DZ3A+JWdBQn55PnZsbyZPMWhhTFAxX0cxeW41P3R3bmIteEJzaHx2Iwp6Y2J5S0Mk
KUY2Z2VXMXQmdig9fWQwa2dOTSpiYkIzeEtOWFN4bCokbXk2XiRCVUF6aGJsZkF1MnZzYjxkMWhh
OSYKeit5aiN0JFBCWnUkM184QFd5dXRpbyFrbnVWYWF8NXZufGpwMUN4Yz04azJ3MjQ3MTc4R3pH
SXEqQDZqXktqUlhVCnomKVc+TUhSSUxAbFVlTFd2K2U4ejBoOFZDN1BERkl3Z0l6VUBTWCYtVUc/
ZSR2KDVPdjM2c2hDNVNNPWcwYX58UAp6MHw1akV4OTxyN0c2VDJTNEZTe3d3KzlnY09hciVCNiMq
T3BtbXdEYys/UXQ8MFRoPjQ3eShTVD1APGM0MGhlREoKSzBrZkI2OTA2d2hNNnNeYAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Zp
c3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xs
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0ZjkyOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1Zpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMTMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9s
bGVyID0gY2xhc3MgVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVs
bDsKKworICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRl
LmNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQgPT09ICJmdW5jdGlvbiIpCisgICAg
ICAgICAgICB0aGlzLmNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQgPSB0aGlzLl9k
ZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNPbkl0ZW1DcmVhdGVkOworCisgICAgICAgIHRo
aXMuX3N1Z2dlc3Rpb25zVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldyh0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBudWxsOworICAgICAg
ICB0aGlzLl9jdXJyZW50Q29tcGxldGlvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRD
b21wbGV0aW9uSW5kZXggPSAwOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZp
c2libGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBsZXRpb25zICYmIHRoaXMu
X2N1cnJlbnRDb21wbGV0aW9ucy5sZW5ndGggJiYgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2li
bGU7CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhIXRoaXMuX2NvbXBsZXRpb25zOworICAgIH0KKworICAgIGdldCBjdXJyZW50Q29tcGxl
dGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDb21wbGV0aW9uc1t0
aGlzLl9zZWxlY3RlZENvbXBsZXRpb25JbmRleF0gfHwgbnVsbDsKKyAgICB9CisKKyAgICBzZXQg
Y29tcGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlzLl9jb21wbGV0aW9u
cyA9IGNvbXBsZXRpb25zIHx8IG51bGw7CisgICAgfQorCisgICAgY29tcGxldGlvblN1Z2dlc3Rp
b25zQ2xpY2tlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCB0ZXh0KQorICAgIHsKKyAgICAg
ICAgc3VnZ2VzdGlvbnNWaWV3LmhpZGUoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2
ZW50LkNvbXBsZXRpb25TZWxlY3RlZCwge3RleHR9KTsKKyAgICB9CisKKyAgICBwcmV2aW91cygp
CisgICAgeworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuc2VsZWN0UHJldmlvdXMoKTsK
KyAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb21wbGV0aW9uSW5kZXggPSB0aGlzLl9zdWdnZXN0aW9u
c1ZpZXcuc2VsZWN0ZWRJbmRleDsKKyAgICB9CisKKyAgICBuZXh0KCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5zZWxlY3ROZXh0KCk7CisgICAgICAgIHRoaXMuX3NlbGVj
dGVkQ29tcGxldGlvbkluZGV4ID0gdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnNlbGVjdGVkSW5kZXg7
CisgICAgfQorCisgICAgdXBkYXRlKHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhh
c0NvbXBsZXRpb25zKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMu
X2N1cnJlbnRDb21wbGV0aW9ucyA9IHRoaXMuX2NvbXBsZXRpb25zLnN0YXJ0c1dpdGgodmFsdWUp
OworCisgICAgICAgIHZhciBjdXJyZW50Q29tcGxldGlvbnNMZW5ndGggPSB0aGlzLl9jdXJyZW50
Q29tcGxldGlvbnMubGVuZ3RoOworICAgICAgICBpZiAoY3VycmVudENvbXBsZXRpb25zTGVuZ3Ro
KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudENvbXBsZXRpb25zTGVuZ3RoID09PSAxICYmIHRo
aXMuX2N1cnJlbnRDb21wbGV0aW9uc1swXSA9PT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLmhpZGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENvbXBsZXRpb25JbmRleCA+PSBjdXJy
ZW50Q29tcGxldGlvbnNMZW5ndGgpCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb21w
bGV0aW9uSW5kZXggPSAwOworCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudXBk
YXRlKHRoaXMuX2N1cnJlbnRDb21wbGV0aW9ucywgdGhpcy5fc2VsZWN0ZWRDb21wbGV0aW9uSW5k
ZXgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlz
LmhpZGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNob3coYm91bmRz
LCBwYWRkaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnNob3coYm91bmRzLnBhZChwYWRk
aW5nIHx8IDApKTsKKyAgICB9CisKKyAgICBoaWRlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9zdWdnZXN0aW9uc1ZpZXcuaXNIYW5kbGluZ0NsaWNrRXZlbnQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOworICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5FdmVudCA9
IHsKKyAgICBDb21wbGV0aW9uU2VsZWN0ZWQ6ICJ2aXN1YWwtc3R5bGUtY29tcGxldGlvbnMtY29u
dHJvbGxlci1jb21wbGV0aW9uLXNlbGVjdGVkIgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyQm90aC5zdmcgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ2xlYXJCb3RoLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2U0MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyQm90aC5zdmcKQEAg
LTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwh
LS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4K
KzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZp
ZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjAuNSIgeT0i
MS41IiB3aWR0aD0iMy41IiBoZWlnaHQ9IjEyIiBmaWxsPSJ0cmFuc3BhcmVudCIgc3Ryb2tlPSJi
bGFjayIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9IjAuNSAzLjUgMC41
IDUuNSA0IDMuNSA0IDEuNSIgc3Ryb2tlPSJub25lIiBzdHlsZT0ib3BhY2l0eTogMC43IiAvPgor
ICAgIDxwb2x5Z29uIGNsYXNzPSJmaWxsZWQiIHBvaW50cz0iMC41IDcuNSAwLjUgOS41IDQgNy41
IDQgNS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFjaXR5OiAwLjciIC8+CisgICAgPHBvbHln
b24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIwLjUgMTEuNSAwLjUgMTMuNSA0IDExLjUgNCA5LjUi
IHN0cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0i
c3Ryb2tlZCIgeD0iMTIiIHk9IjEuNSIgd2lkdGg9IjMuNSIgaGVpZ2h0PSIxMiIgZmlsbD0idHJh
bnNwYXJlbnQiIHN0cm9rZT0iYmxhY2siIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIg
cG9pbnRzPSIxMiAzLjUgMTIgNS41IDE1LjUgMy41IDE1LjUgMS41IiBzdHJva2U9Im5vbmUiIHN0
eWxlPSJvcGFjaXR5OiAwLjciIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRz
PSIxMiA3LjUgMTIgOS41IDE1LjUgNy41IDE1LjUgNS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJv
cGFjaXR5OiAwLjciIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIxMiAx
MS41IDEyIDEzLjUgMTUuNSAxMS41IDE1LjUgOS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFj
aXR5OiAwLjciIC8+CisgICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjUuNSIgeT0iNSIgd2lk
dGg9IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Ns
ZWFyTGVmdC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
Q2xlYXJMZWZ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWI0MTA4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL0NsZWFyTGVmdC5zdmcKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8cmVjdCBjbGFz
cz0ic3Ryb2tlZCIgeD0iMiIgeT0iMS41IiB3aWR0aD0iNSIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJibGFjayIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9
IjIgMy41IDIgNS41IDcgMy41IDcgMS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFjaXR5OiAw
LjciIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIyIDcuNSAyIDkuNSA3
IDcuNSA3IDUuNSIgc3Ryb2tlPSJub25lIiBzdHlsZT0ib3BhY2l0eTogMC43IiAvPgorICAgIDxw
b2x5Z29uIGNsYXNzPSJmaWxsZWQiIHBvaW50cz0iMiAxMS41IDIgMTMuNSA3IDExLjUgNyA5LjUi
IHN0cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0i
c3Ryb2tlZCIgeD0iOSIgeT0iNSIgd2lkdGg9IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJibGFjayIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyUmlnaHQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyUmlnaHQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQzMjExMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ2xlYXJSaWdodC5zdmcKQEAgLTAsMCAr
MSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5
cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2
ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0i
MCAwIDE2IDE2Ij4KKyAgICA8cmVjdCBjbGFzcz0ic3Ryb2tlZCIgeD0iOSIgeT0iMS41IiB3aWR0
aD0iNSIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKyAgICA8cG9s
eWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9IjkgMy41IDkgNS41IDE0IDMuNSAxNCAxLjUiIHN0
cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0i
ZmlsbGVkIiBwb2ludHM9IjkgNy41IDkgOS41IDE0IDcuNSAxNCA1LjUiIHN0cm9rZT0ibm9uZSIg
c3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2lu
dHM9IjkgMTEuNSA5IDEzLjUgMTQgMTEuNSAxNCA5LjUiIHN0cm9rZT0ibm9uZSIgc3R5bGU9Im9w
YWNpdHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0ic3Ryb2tlZCIgeD0iMiIgeT0iNSIgd2lk
dGg9IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Zs
b2F0TGVmdC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
RmxvYXRMZWZ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDMxYjY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL0Zsb2F0TGVmdC5zdmcKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgc3Ryb2tlPSJibGFjayI+
CisgICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjAuNSIgeT0iMi41IiB3aWR0aD0iNSIgaGVp
Z2h0PSI1IiBmaWxsPSJub25lIiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iNy41
IiB5MT0iMi41IiB4Mj0iMTYiIHkyPSIyLjUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQi
IHgxPSI3LjUiIHkxPSI1IiB4Mj0iMTYiIHkyPSI1IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJv
a2VkIiB4MT0iNy41IiB5MT0iNy41IiB4Mj0iMTYiIHkyPSI3LjUiIC8+CisgICAgPGxpbmUgY2xh
c3M9InN0cm9rZWQiIHgxPSIwIiB5MT0iMTAiIHgyPSIxNiIgeTI9IjEwIiAvPgorICAgIDxsaW5l
IGNsYXNzPSJzdHJva2VkIiB4MT0iMCIgeTE9IjEyLjUiIHgyPSIxNiIgeTI9IjEyLjUiIC8+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9GbG9hdFJpZ2h0LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9GbG9hdFJpZ2h0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zMTgxYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL0Zsb2F0UmlnaHQuc3ZnCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHN0cm9r
ZT0iYmxhY2siPgorICAgIDxyZWN0IGNsYXNzPSJzdHJva2VkIiB4PSIxMC41IiB5PSIyLjUiIHdp
ZHRoPSI1IiBoZWlnaHQ9IjUiIGZpbGw9Im5vbmUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0cm9r
ZWQiIHgxPSIwIiB5MT0iMi41IiB4Mj0iOC41IiB5Mj0iMi41IiAvPgorICAgIDxsaW5lIGNsYXNz
PSJzdHJva2VkIiB4MT0iMCIgeTE9IjUiIHgyPSI4LjUiIHkyPSI1IiAvPgorICAgIDxsaW5lIGNs
YXNzPSJzdHJva2VkIiB4MT0iMCIgeTE9IjcuNSIgeDI9IjguNSIgeTI9IjcuNSIgLz4KKyAgICA8
bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAiIHkxPSIxMCIgeDI9IjE2IiB5Mj0iMTAiIC8+Cisg
ICAgPGxpbmUgY2xhc3M9InN0cm9rZWQiIHgxPSIwIiB5MT0iMTIuNSIgeDI9IjE2IiB5Mj0iMTIu
NSIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL0ZvbnRTdHlsZUl0YWxpYy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbWFnZXMvRm9udFN0eWxlSXRhbGljLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iMTE2NDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0ZvbnRTdHlsZUl0YWxpYy5zdmcKQEAg
LTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEt
LSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgor
PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmll
d0JveD0iMCAwIDE2IDE2IiBmb250LXNpemU9IjkiIGZvbnQtZmFtaWx5PSItYXBwbGUtc3lzdGVt
LCBzYW5zLXNlcmlmIiBmb250LXN0eWxlPSJpdGFsaWMiPgorICAgIDx0ZXh0IGNsYXNzPSJmaWxs
ZWQiIHg9Ii0xIiB5PSIxMSI+QWJjPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRm9udFN0eWxlTm9ybWFsLnN2ZyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Gb250U3R5bGVOb3Jt
YWwuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWFmZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
Rm9udFN0eWxlTm9ybWFsLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZvbnQtc2l6ZT0iOSIgZm9u
dC1mYW1pbHk9Ii1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiPgorICAgIDx0ZXh0IGNsYXNzPSJm
aWxsZWQiIHg9Ii0xIiB5PSIxMSI+QWJjPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRm9udFZhcmlhbnRTbWFsbENh
cHMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0ZvbnRW
YXJpYW50U21hbGxDYXBzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NzQ2MTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL0ZvbnRWYXJpYW50U21hbGxDYXBzLnN2ZwpAQCAtMCwwICsxLDggQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEu
MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYi
IGZvbnQtc2l6ZT0iNyIgZm9udC1mYW1pbHk9Ii1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiPgor
ICAgIDxyZWN0IGNsYXNzPSJmaWxsZWQiIHg9Ii0yIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZp
bGw9IndoaXRlIiBzdHJva2U9Im5vbmUiIC8+CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0i
MC4yNSIgeT0iMTEiIGZvbnQtc2l6ZT0iMTAiPkE8L3RleHQ+CisgICAgPHRleHQgY2xhc3M9ImZp
bGxlZCIgeD0iNi43NSIgeT0iMTEiPkI8L3RleHQ+CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIg
eD0iMTEiIHk9IjExIj5DPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTWludXMuc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mOWU1NzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpAQCAtMCwwICsxLDUgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDC
qSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249
IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTMg
MTMiPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNr
IiB4MT0iMS41IiB5MT0iNi41IiB4Mj0iMTEuNSIgeTI9IjYuNSIvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWdu
Q2VudGVyLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9U
ZXh0QWxpZ25DZW50ZXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFi
NjViNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvVGV4dEFsaWduQ2VudGVyLnN2ZwpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHN0cm9r
ZT0iYmxhY2siPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iMyIgeDI9
IjE0LjUiIHkyPSIzIiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMyIgeTE9IjUu
NSIgeDI9IjEyIiB5Mj0iNS41IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41
IiB5MT0iOCIgeDI9IjE0LjUiIHkyPSI4IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4
MT0iMyIgeTE9IjEwLjUiIHgyPSIxMiIgeTI9IjEwLjUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0
cm9rZWQiIHgxPSIwLjUiIHkxPSIxMyIgeDI9IjE0LjUiIHkyPSIxMyIgLz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHRB
bGlnbkp1c3RpZnkuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1h
Z2VzL1RleHRBbGlnbkp1c3RpZnkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQ1ZTI4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduSnVzdGlmeS5zdmcKQEAgLTAsMCArMSw5IEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIx
LjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2
IiBzdHJva2U9ImJsYWNrIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAuNSIgeTE9
IjMiIHgyPSIxNC41IiB5Mj0iMyIgLz4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAu
NSIgeTE9IjUuNSIgeDI9IjE0LjUiIHkyPSI1LjUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0cm9r
ZWQiIHgxPSIwLjUiIHkxPSI4IiB4Mj0iMTQuNSIgeTI9IjgiIC8+CisgICAgPGxpbmUgY2xhc3M9
InN0cm9rZWQiIHgxPSIwLjUiIHkxPSIxMC41IiB4Mj0iMTQuNSIgeTI9IjEwLjUiIC8+CisgICAg
PGxpbmUgY2xhc3M9InN0cm9rZWQiIHgxPSIwLjUiIHkxPSIxMyIgeDI9IjE0LjUiIHkyPSIxMyIg
Lz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSW1hZ2VzL1RleHRBbGlnbkxlZnQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL1RleHRBbGlnbkxlZnQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmNjZjc5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduTGVmdC5zdmcKQEAgLTAsMCArMSw5
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmln
aHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw
IDE2IDE2IiBzdHJva2U9ImJsYWNrIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAu
NSIgeTE9IjMiIHgyPSIxNC41IiB5Mj0iMyIgLz4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIg
eDE9IjAuNSIgeTE9IjUuNSIgeDI9IjkuNSIgeTI9IjUuNSIgLz4KKyAgICA8bGluZSBjbGFzcz0i
c3Ryb2tlZCIgeDE9IjAuNSIgeTE9IjgiIHgyPSIxNC41IiB5Mj0iOCIgLz4KKyAgICA8bGluZSBj
bGFzcz0ic3Ryb2tlZCIgeDE9IjAuNSIgeTE9IjEwLjUiIHgyPSI5LjUiIHkyPSIxMC41IiAvPgor
ICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iMTMiIHgyPSIxNC41IiB5Mj0i
MTMiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9UZXh0QWxpZ25SaWdodC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduUmlnaHQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTZjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduUmlnaHQuc3ZnCkBAIC0w
LDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0g
Q29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxz
dmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC
b3g9IjAgMCAxNiAxNiIgc3Ryb2tlPSJibGFjayI+CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQi
IHgxPSIwLjUiIHkxPSIzIiB4Mj0iMTQuNSIgeTI9IjMiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0
cm9rZWQiIHgxPSI1LjUiIHkxPSI1LjUiIHgyPSIxNC41IiB5Mj0iNS41IiAvPgorICAgIDxsaW5l
IGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iOCIgeDI9IjE0LjUiIHkyPSI4IiAvPgorICAg
IDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iNS41IiB5MT0iMTAuNSIgeDI9IjE0LjUiIHkyPSIx
MC41IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iMTMiIHgyPSIx
NC41IiB5Mj0iMTMiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoLnN2ZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0RGVjb3JhdGlvbkxp
bmVUaHJvdWdoLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM5Y2Zl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1RleHREZWNvcmF0aW9uTGluZVRocm91Z2guc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4x
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIg
Zm9udC1zaXplPSI5IiBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZiI+Cisg
ICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0iMCIgeT0iMTEuNSI+QWJjPC90ZXh0PgorICAgIDxs
aW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMCIgeTE9IjguNSIgeDI9IjE1LjUiIHkyPSI4LjUiIHN0
cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uT3ZlcmxpbmUuc3ZnIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uT3Zlcmxp
bmUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzRhMjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
VGV4dERlY29yYXRpb25PdmVybGluZS5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2IiBmb250LXNpemU9
IjkiIGZvbnQtZmFtaWx5PSItYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmIj4KKyAgICA8dGV4dCBj
bGFzcz0iZmlsbGVkIiB4PSIwIiB5PSIxMS41Ij5BYmM8L3RleHQ+CisgICAgPGxpbmUgY2xhc3M9
InN0cm9rZWQiIHgxPSIwIiB5MT0iMy41IiB4Mj0iMTUuNSIgeTI9IjMuNSIgc3Ryb2tlPSJibGFj
ayIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvVGV4dERlY29yYXRpb25VbmRlcmxpbmUuc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uVW5kZXJsaW5lLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk0YWExCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNv
cmF0aW9uVW5kZXJsaW5lLnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZvbnQtc2l6ZT0iOSIgZm9u
dC1mYW1pbHk9Ii1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiPgorICAgIDx0ZXh0IGNsYXNzPSJm
aWxsZWQiIHg9IjAiIHk9IjExLjUiPkFiYzwvdGV4dD4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tl
ZCIgeDE9IjAiIHkxPSIxMi41IiB4Mj0iMTUuNSIgeTI9IjEyLjUiIHN0cm9rZT0iYmxhY2siLz4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1RleHRUcmFuc2Zvcm1DYXBpdGFsaXplLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtQ2FwaXRhbGl6ZS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlYzFhZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3Jt
Q2FwaXRhbGl6ZS5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2IiBmb250LXNpemU9IjkiIGZvbnQtZmFt
aWx5PSItYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmIj4KKyAgICA8dGV4dCBjbGFzcz0iZmlsbGVk
IiB4PSIwIiB5PSIxMS41Ij5BYmM8L3RleHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtTG93ZXJjYXNl
LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJh
bnNmb3JtTG93ZXJjYXNlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
ZDJkOWRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1RleHRUcmFuc2Zvcm1Mb3dlcmNhc2Uuc3ZnCkBAIC0wLDAgKzEsNSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0i
MS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAx
NiIgZm9udC1zaXplPSI5IiBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZiI+
CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0iMC41IiB5PSIxMS41Ij5hYmM8L3RleHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9UZXh0VHJhbnNmb3JtVXBwZXJjYXNlLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtVXBwZXJjYXNlLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDRjYTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHRUcmFuc2Zvcm1VcHBl
cmNhc2Uuc3ZnCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZm9udC1zaXplPSI5IiBmb250LWZhbWlseT0i
LWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZiI+CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0i
LTEiIHk9IjExLjUiPkFCQzwvdGV4dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlTm9uZS5zdmcgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVOb25lLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjg4YTEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3Vh
bFN0eWxlTm9uZS5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8bGluZSBjbGFzcz0ic3Ry
b2tlZCIgeDE9IjAiIHkxPSI4IiB4Mj0iMTQiIHkyPSI4IiBzdHJva2U9ImJsYWNrIi8+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRl
eCAyZmIyMTllLi5kNTY5YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCkBAIC0xNTksNiArMTU5LDE5IEBACiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVG9rZW5WaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlVmlldy5jc3MiPgorICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3Mi
PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250
cm9sbGVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1
YWxTdHlsZUtleXdvcmRDaGVja2JveC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QuY3NzIj4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3Nz
Ij4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlVW5p
dFNsaWRlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJT
bGlkZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3Vh
bFN0eWxlU2VsZWN0b3JJdGVtLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5jc3MiPgogCiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRy
b2xsZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJz
L0NvZGVNaXJyb3JEcmFnVG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+CkBAIC01MzUsNiAr
NTQ4LDI2IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+
CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlv
bi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0
b3JJdGVtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVU
YWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxp
c3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlz
dWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVVSTElucHV0LmpzIj48L3NjcmlwdD4K
KwogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Bbm5vdGF0b3IuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIu
anMiPjwvc2NyaXB0PgogCkBAIC01NjgsNiArNjAxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U0tleXdvcmRDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKaW5kZXggNDM0OGFmYi4uZTg1OGRi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCkBAIC01NCw3ICs1NCw3
IEBAIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkgPSBmdW5j
dGlvbihwcm9wZXJ0eU5hbWUpCiAgICAgZWxzZSBpZiAoaXNOb3RQcmVmaXhlZCAmJiAoIi13ZWJr
aXQtIiArIHByb3BlcnR5TmFtZSkgaW4gV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5Jbmhlcml0ZWRQcm9wZXJ0aWVzKQogICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1c2goImlu
aGVyaXQiKTsKIAotICAgIGlmIChhY2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdlYkluc3BlY3Rv
ci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSkgewor
ICAgIGlmIChhY2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdlYkluc3BlY3Rvci5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSAmJiBXZWJJbnNwZWN0b3Iu
Q1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKSB7CiAgICAgICAgIGFjY2VwdGVkS2V5
d29yZHMucmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVy
dHlOYW1lc1BsYWNlaG9sZGVyKTsKICAgICAgICAgYWNjZXB0ZWRLZXl3b3JkcyA9IGFjY2VwdGVk
S2V5d29yZHMuY29uY2F0KFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxl
dGlvbnMudmFsdWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCmluZGV4IGE5NGUyN2IuLmNjOTkyZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NS
dWxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NSdWxlLmpzCkBAIC0xNzcsNiArMTc3LDE5IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlID0gY2xh
c3MgQ1NTUnVsZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRo
aXMuX21lZGlhTGlzdDsKICAgICB9CiAKKyAgICBnZXQgbWVkaWFUZXh0KCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fbWVkaWFMaXN0Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB2YXIgbWVkaWFUZXh0ID0gIiI7CisKKyAgICAgICAgZm9yICh2YXIgbWVkaWEgb2Yg
dGhpcy5fbWVkaWFMaXN0KQorICAgICAgICAgICAgbWVkaWFUZXh0ICs9IG1lZGlhLnRleHQ7CisK
KyAgICAgICAgcmV0dXJuIG1lZGlhVGV4dDsKKyAgICB9CisKICAgICBpc0VxdWFsVG8ocnVsZSkK
ICAgICB7CiAgICAgICAgIGlmICghcnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24u
anMKaW5kZXggOTQwNzhjZi4uZTdmMmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRp
b24uanMKQEAgLTQzLDYgKzQzLDkgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24g
PSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAg
dGhpcy5fcGVuZGluZ1Byb3BlcnRpZXMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1l
TWFwID0ge307CiAKKyAgICAgICAgdGhpcy5faW5pdGlhbFRleHQgPSB0ZXh0OworICAgICAgICB0
aGlzLm1vZGlmaWVkID0gZmFsc2U7CisKICAgICAgICAgdGhpcy51cGRhdGUodGV4dCwgcHJvcGVy
dGllcywgc3R5bGVTaGVldFRleHRSYW5nZSwgdHJ1ZSk7CiAgICAgfQogCkBAIC0xODMsOSArMTg2
LDIxIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0gY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIGlmICh0aGlzLl90ZXh0ID09
PSB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHZhciBtb2RpZmllZCA9IHRl
eHQgIT09IHRoaXMuX2luaXRpYWxUZXh0OworCisgICAgICAgIGlmIChtb2RpZmllZCAhPT0gdGhp
cy5tb2RpZmllZCkgeworICAgICAgICAgICAgdGhpcy5tb2RpZmllZCA9IG1vZGlmaWVkOworICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24uRXZlbnQuSW5pdGlhbFRleHRNb2RpZmllZCk7CisgICAgICAgIH0KKwog
ICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLmNoYW5nZVN0eWxlVGV4dCh0aGlzLCB0ZXh0KTsKICAg
ICB9CiAKKyAgICByZXNldFRleHQoKQorICAgIHsKKyAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5f
aW5pdGlhbFRleHQ7CisgICAgfQorCiAgICAgZ2V0IHByb3BlcnRpZXMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7CkBAIC0yNjAsNiArMjc1LDQ2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBleHRl
bmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHJldHVybiBuZXdQcm9wZXJ0eTsKICAgICB9CiAKKyAg
ICBnZW5lcmF0ZUNTU1J1bGVTdHJpbmcoKQorICAgIHsKKyAgICAgICAgdmFyIG51bU1lZGlhUXVl
cmllcyA9IDA7CisgICAgICAgIHZhciBzdHlsZVRleHQgPSAiIjsKKworICAgICAgICBpZiAodGhp
cy5fb3duZXJSdWxlKSB7CisgICAgICAgICAgICB2YXIgbWVkaWFMaXN0ID0gdGhpcy5fb3duZXJS
dWxlLm1lZGlhTGlzdDsKKyAgICAgICAgICAgIGlmIChtZWRpYUxpc3QubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgbnVtTWVkaWFRdWVyaWVzID0gbWVkaWFMaXN0Lmxlbmd0aDsKKworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSBudW1NZWRpYVF1ZXJpZXMgLSAxOyBpID49IDA7IC0taSkK
KyAgICAgICAgICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQobnVtTWVkaWFR
dWVyaWVzIC0gaSAtIDEpICsgIkBtZWRpYSAiICsgbWVkaWFMaXN0W2ldLnRleHQgKyAiIHtcbiI7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAgICIucmVwZWF0
KG51bU1lZGlhUXVlcmllcykgKyB0aGlzLl9vd25lclJ1bGUuc2VsZWN0b3JUZXh0OworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHN0eWxlVGV4dCArPSB0aGlzLl9zZWxlY3RvckVsZW1lbnQu
dGV4dENvbnRlbnQ7CisKKyAgICAgICAgc3R5bGVUZXh0ICs9ICIge1xuIjsKKworICAgICAgICBm
b3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHkuYW5vbnltb3VzKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBzdHlsZVRleHQgKz0gIiAgICAiLnJlcGVhdChudW1NZWRpYVF1ZXJpZXMgKyAxKSArIHBy
b3BlcnR5LnRleHQudHJpbSgpOworCisgICAgICAgICAgICBpZiAoIXN0eWxlVGV4dC5lbmRzV2l0
aCgiOyIpKQorICAgICAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiOyI7CisKKyAgICAgICAgICAg
IHN0eWxlVGV4dCArPSAiXG4iOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IG51
bU1lZGlhUXVlcmllczsgaSA+IDA7IC0taSkKKyAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAg
ICIucmVwZWF0KGkpICsgIn1cbiI7CisKKyAgICAgICAgc3R5bGVUZXh0ICs9ICJ9IjsKKworICAg
ICAgICByZXR1cm4gc3R5bGVUZXh0OworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAg
Z2V0IG5vZGVTdHlsZXMoKQpAQCAtMjY5LDcgKzMyNCw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBleHRlbmRzIFdlYkluc3Bl
Y3RvCiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5FdmVudCA9IHsKLSAg
ICBQcm9wZXJ0aWVzQ2hhbmdlZDogImNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWNo
YW5nZWQiCisgICAgUHJvcGVydGllc0NoYW5nZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJv
cGVydGllcy1jaGFuZ2VkIiwKKyAgICBJbml0aWFsVGV4dE1vZGlmaWVkOiAiY3NzLXN0eWxlLWRl
Y2xhcmF0aW9uLWluaXRpYWwtdGV4dC1tb2RpZmllZCIKIH07CiAKIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uLlR5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLmpzCmluZGV4IGIzZTBkMDcuLjU2ZDlkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC00NDksNDkgKzQ0OSwxMiBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uU2VjdGlvbiBleHRlbgogICAgICAgICB9CiAKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUnVsZSIpLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dCh0aGlzLl9nZW5lcmF0ZUNT
U1J1bGVTdHJpbmcoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRl
eHQodGhpcy5fc3R5bGUuZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKCkpOwogICAgICAgICB9LmJpbmQo
dGhpcykpOwogCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9CiAKLSAgICBfZ2Vu
ZXJhdGVDU1NSdWxlU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHZhciBudW1NZWRpYVF1ZXJpZXMg
PSAwOwotICAgICAgICB2YXIgc3R5bGVUZXh0ID0gIiI7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N0
eWxlLm93bmVyUnVsZSkgewotICAgICAgICAgICAgdmFyIG1lZGlhTGlzdCA9IHRoaXMuX3N0eWxl
Lm93bmVyUnVsZS5tZWRpYUxpc3Q7Ci0gICAgICAgICAgICBpZiAobWVkaWFMaXN0Lmxlbmd0aCkg
ewotICAgICAgICAgICAgICAgIG51bU1lZGlhUXVlcmllcyA9IG1lZGlhTGlzdC5sZW5ndGg7Ci0K
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbnVtTWVkaWFRdWVyaWVzIC0gMTsgaSA+PSAw
OyAtLWkpCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAgICIucmVwZWF0KG51
bU1lZGlhUXVlcmllcyAtIGkgLSAxKSArICJAbWVkaWEgIiArIG1lZGlhTGlzdFtpXS50ZXh0ICsg
IiB7XG4iOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdHlsZVRleHQgKz0gIiAgICAi
LnJlcGVhdChudW1NZWRpYVF1ZXJpZXMpICsgdGhpcy5fc3R5bGUub3duZXJSdWxlLnNlbGVjdG9y
VGV4dDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHlsZVRleHQgKz0gdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50LnRleHRDb250ZW50OwotCi0gICAgICAgIHN0eWxlVGV4dCArPSAiIHtcbiI7
Ci0KLSAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgdGhpcy5fc3R5bGUudmlzaWJsZVByb3Bl
cnRpZXMpIHsKLSAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAgICIucmVwZWF0KG51bU1lZGlh
UXVlcmllcyArIDEpICsgcHJvcGVydHkudGV4dC50cmltKCk7Ci0KLSAgICAgICAgICAgIGlmICgh
c3R5bGVUZXh0LmVuZHNXaXRoKCI7IikpCi0gICAgICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICI7
IjsKLQotICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICJcbiI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3IgKHZhciBpID0gbnVtTWVkaWFRdWVyaWVzOyBpID4gMDsgLS1pKQotICAgICAgICAgICAg
c3R5bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQoaSkgKyAifVxuIjsKLQotICAgICAgICBzdHlsZVRl
eHQgKz0gIn0iOwotCi0gICAgICAgIHJldHVybiBzdHlsZVRleHQ7Ci0gICAgfQotCiAgICAgX3Rv
Z2dsZVJ1bGVPbk9mZigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzSW52YWxpZFNlbGVj
dG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4
IDIzZTcxMmYuLjIyODVhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKQEAgLTY5LDEyICs2OSwxMyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAog
ICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rv
ci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
KHRoaXMpOwogICAgICAgICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAgICAgICAgdGhpcy5f
dmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuRXZlbnQu
UmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB0aGlzLl9y
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0eWxl
RGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdlLCB0aGlz
KTsKIAotICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fbWV0cmljc1N0eWxlRGV0
YWlsc1BhbmVsXTsKLSAgICAgICAgdGhpcy5fcGFuZWxOYXZpZ2F0aW9uSW5mbyA9IFt0aGlzLl9j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9ydWxlc1N0eWxl
RGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFu
ZWwubmF2aWdhdGlvbkluZm9dOworICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5f
bWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQYW5lbF07
CisgICAgICAgIHRoaXMuX3BhbmVsTmF2aWdhdGlvbkluZm8gPSBbdGhpcy5fY29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5l
bC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRp
b25JbmZvLCB0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mb107CiAK
ICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtc3R5bGUtZGV0YWlscy1wYW5lbCIsIHRoaXMuX3J1
bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8uaWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IDhlNzgwMTQuLjA2YTlh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMTc1
LDYgKzE3NSw5IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xh
c3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzCiAgICAgICAgICAgICBpZiAoaSA9
PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCkKICAgICAgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LlNlbGVjdGVk
SXRlbVN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
YXBwZW5kQ2hpbGQoaXRlbUVsZW1lbnQpOworCisgICAgICAgICAgICBpZiAodGhpcy5fZGVsZWdh
dGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNy
ZWF0ZWQgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29t
cGxldGlvblN1Z2dlc3Rpb25zT25JdGVtQ3JlYXRlZChpdGVtRWxlbWVudCwgY29tcGxldGlvbnNb
aV0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmluZGV4IDg0YjNh
MzkuLmQ4YTI0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBAIC02MSw2ICs2MSw3IEBAIFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNv
bGxhcHNlZCIsICEhZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7CiAgICAgICAgIHRoaXMu
Y29sbGFwc2VkID0gdGhpcy5fY29sbGFwc2VkU2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5f
ZXhwYW5kZWRCeVVzZXIgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTExNSw2
ICsxMTYsMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1Nl
Y3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0uZWxlbWVudCk7CiAgICAgfQog
CisgICAgZ2V0IGV4cGFuZGVkQnlVc2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9l
eHBhbmRlZEJ5VXNlcjsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGVhZGVyRWxl
bWVudENsaWNrZWQoZXZlbnQpCkBAIC0xMjIsNyArMTI4LDkgQEAgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5kYW50KHRoaXMuX29w
dGlvbnNFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmNvbGxh
cHNlZCA9ICF0aGlzLmNvbGxhcHNlZDsKKyAgICAgICAgdmFyIGNvbGxhcHNlZCA9IHRoaXMuY29s
bGFwc2VkOworICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICFjb2xsYXBzZWQ7CisgICAgICAgIHRo
aXMuX2V4cGFuZGVkQnlVc2VyID0gY29sbGFwc2VkOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQu
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzCmluZGV4IDE1NDc3MWYu
Ljk0MGRmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NsaWRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TbGlkZXIuanMKQEAgLTYxLDE0ICs2MSwxOCBAQCBXZWJJbnNwZWN0b3IuU2xpZGVy
ID0gY2xhc3MgU2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7Ci0KLSAgICAgICAgdGhpcy5f
a25vYlggPSBNYXRoLnJvdW5kKHZhbHVlICogdGhpcy5fbWF4WCk7Ci0gICAgICAgIHRoaXMuX2tu
b2Iuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKCIgKyB0aGlzLl9rbm9iWCAr
ICJweCwgMCwgMCkiOworICAgICAgICB0aGlzLmtub2JYID0gdmFsdWU7CiAKICAgICAgICAgaWYg
KHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuc2xpZGVyVmFsdWVEaWRDaGFu
Z2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLnNsaWRlclZhbHVl
RGlkQ2hhbmdlKHRoaXMsIHZhbHVlKTsKICAgICB9CiAKKyAgICBzZXQga25vYlgodmFsdWUpCisg
ICAgeworICAgICAgICB0aGlzLl9rbm9iWCA9IE1hdGgucm91bmQodmFsdWUgKiB0aGlzLl9tYXhY
KTsKKyAgICAgICAgdGhpcy5fa25vYi5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRl
M2QoIiArIHRoaXMuX2tub2JYICsgInB4LCAwLCAwKSI7CisgICAgfQorCiAgICAgLy8gUHJvdGVj
dGVkCiAKICAgICBoYW5kbGVFdmVudChldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggZDVkMDdj
NS4uMGE4MmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTUwNCw2ICs1MDQsMTkgQEAgV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5n
CiAgICAgfQorCisgICAgZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnRJbmRleCgpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
Y2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ld
ID09PSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAogV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIgPSAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVDb2xvclBpY2tlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44MmM1YzIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3MK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIG1hcmdpbi1sZWZ0OiAwLjVweDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2Vy
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LXNwZWNpYWwtcHJvcGVydHktcGxhY2Vob2xkZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaCB7Cisg
ICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAy
M3B4OworICAgIGhlaWdodDogMThweDsKKyAgICBtYXJnaW4tdG9wOiAxcHg7CisgICAgLyogTWFr
ZSBhIGNoZWNrZXJlZCBiYWNrZ3JvdW5kIGZvciB0cmFuc3BhcmVudCBjb2xvcnMgdG8gc2hvdyBh
Z2FpbnN0LiAqLworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0
b20sIHJnYigyMDQsIDIwNCwgMjA0KSwgcmdiKDIwNCwgMjA0LCAyMDQpKSwKKyAgICAgICAgbGlu
ZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiKDIwNCwgMjA0LCAyMDQpLCByZ2IoMjA0LCAyMDQs
IDIwNCkpOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtc2l6
ZTogY2FsYyg1MCUpOworICAgIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0LCBib3R0b20g
cmlnaHQ7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBjdXJzb3I6IGRl
ZmF1bHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9y
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9y
LXN3YXRjaCA+IHNwYW4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7Cisg
ICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisgICAgYm9yZGVyOiAx
cHggc29saWQgcmdiYSg2NCwgNjQsIDY0LCAwLjQpOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2g6aG92ZXIgPiBzcGFuIHsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCByZ2JhKDY0LCA2NCwgNjQsIDAuOCk7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaDphY3RpdmUgPiBzcGFuIHsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDY0LCA2NCwgNjQsIDEpOworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IGlucHV0IHsKKyAgICBtYXJnaW46IDFweCAxLjVw
eCAzcHggMDsKKyAgICBwYWRkaW5nOiAwIDNweDsKKyAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1
czogNHB4OworICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CisgICAgYm9yZGVy
OiBzb2xpZCAxcHggbGlnaHRncmV5OworICAgIGJvcmRlci1sZWZ0OiBub25lOworICAgIHRleHQt
YWxpZ246IHJpZ2h0OworICAgIGZvbnQtc2l6ZTogMTBweDsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyLm11bHRpcGxlID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLW11bHRpcGxlLXBy
b3BlcnR5LXBsYWNlaG9sZGVyIHsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CisgICAg
bGVmdDogMThweDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CisgICAgdGV4dC1hbGlnbjogcmln
aHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDc4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tl
ci5qcwpAQCAtMCwwICsxLDIxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUNvbG9yUGlja2VyID0gY2xhc3MgVmlzdWFsU3R5bGVDb2xvclBpY2tlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAgY29uc3RydWN0b3Io
cHJvcGVydHlOYW1lcywgdGV4dCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBl
cihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBudWxsLCBudWxsLCAiaW5wdXQtY29sb3ItcGlja2VyIiwg
bGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiY29sb3Itc3dhdGNoIik7CisgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBpY2tl
ci4gU2hpZnQtY2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdC4iKTsKKyAgICAgICAgdGhpcy5f
c3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NvbG9yU3dhdGNo
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX3N3YXRjaEVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50KTsKKworICAgICAgICB0
aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zd2F0Y2hFbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl90ZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
OworICAgICAgICB0aGlzLl90ZXh0SW5wdXQuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0
aGlzLl90ZXh0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3RleHRJbnB1
dEtleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3RleHRJbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJrZXl1cCIsIHRoaXMuX3RleHRJbnB1dEtleVVwLmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl90ZXh0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2hpZGVDb21w
bGV0aW9ucy5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fdGV4dElucHV0KTsKKworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJv
bGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIo
dGhpcyk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50LkNv
bXBsZXRpb25TZWxlY3RlZCwgdGhpcy5fY29tcGxldGlvbkNsaWNrZWQsIHRoaXMpOworCisgICAg
ICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gL14oW147XSspXHMqOz8kLzsKKyAgICAgICAgdGhpcy5f
Zm9ybWF0Q2hhbmdlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl91cGRhdGVDb2xvclN3YXRjaCgp
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl90ZXh0SW5wdXQudmFsdWU7CisgICAgfQorCisgICAgc2V0IHZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID09PSB0aGlzLnZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3RleHRJbnB1dC52YWx1ZSA9
IHRoaXMuX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1ZXMoKSA/IG51bGwgOiB2YWx1ZTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlQ29sb3JTd2F0Y2goKTsKKyAgICB9CisKKyAgICBnZXQgcGxhY2Vo
b2xkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRJbnB1dC5nZXRBdHRyaWJ1
dGUoInBsYWNlaG9sZGVyIik7CisgICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCisg
ICAgeworICAgICAgICBpZiAodGV4dCAmJiB0ZXh0ID09PSB0aGlzLnBsYWNlaG9sZGVyKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9oYXNNdWx0aXBsZUNvbmZsaWN0
aW5nVmFsdWVzKCkpCisgICAgICAgICAgICB0ZXh0ID0gdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxh
Y2Vob2xkZXIudGV4dENvbnRlbnQ7CisKKyAgICAgICAgdGhpcy5fdGV4dElucHV0LnNldEF0dHJp
YnV0ZSgicGxhY2Vob2xkZXIiLCB0ZXh0IHx8ICJ0cmFuc3BhcmVudCIpOworICAgIH0KKworICAg
IGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVl
IHx8IG51bGw7CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oYXNDb21wbGV0aW9uczsKKyAg
ICB9CisKKyAgICBzZXQgY29tcGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0
aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF91cGRhdGVDb2xvclN3YXRjaCgpCisgICAgewor
ICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl90ZXh0SW5wdXQudmFsdWU7CisgICAgICAgIHRoaXMu
X2NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcodmFsdWUgfHwgInRyYW5zcGFy
ZW50Iik7CisgICAgICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5k
Q29sb3IgPSB0aGlzLl9jb2xvciA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBfY29sb3JT
d2F0Y2hDbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5fY29s
b3I7CisKKyAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7CisgICAgICAgICAgICB2YXIgbmV4
dEZvcm1hdCA9IGNvbG9yLm5leHRGb3JtYXQoKTsKKworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQobmV4dEZvcm1hdCk7CisgICAgICAgICAgICBpZiAoIW5leHRGb3JtYXQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjb2xvci5mb3JtYXQgPSBuZXh0Rm9ybWF0Owor
ICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGNvbG9yLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAg
IHRoaXMuX2Zvcm1hdENoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fdmFsdWVEaWRD
aGFuZ2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBi
b3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fc3dhdGNo
RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisKKyAgICAgICAgdmFyIGNvbG9yUGlj
a2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsKKyAgICAgICAgY29sb3JQaWNrZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZlbnQuQ29sb3JDaGFu
Z2VkLCB0aGlzLl9jb2xvclBpY2tlckNvbG9yRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB2
YXIgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgcG9w
b3Zlci5jb250ZW50ID0gY29sb3JQaWNrZXIuZWxlbWVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVz
ZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKKworICAg
ICAgICBjb2xvclBpY2tlci5jb2xvciA9IGNvbG9yOworICAgIH0KKworICAgIF9jb2xvclBpY2tl
ckNvbG9yRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZvcm1hdCA9ICF0aGlz
Ll9mb3JtYXRDaGFuZ2VkID8gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IRVggOiBudWxsOwor
ICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQuZGF0YS5jb2xvci50b1N0cmluZyhmb3JtYXQpOwor
ICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF9jb21wbGV0aW9u
Q2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5kYXRhLnRl
eHQ7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX3RleHRJ
bnB1dEtleURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25D
b250cm9sbGVyLnZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGtl
eUNvZGUgPSBldmVudC5rZXlDb2RlOworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSB8fCBrZXlD
b2RlID09PSAxMykgeworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX2NvbXBsZXRpb25D
b250cm9sbGVyLmN1cnJlbnRDb21wbGV0aW9uOworICAgICAgICAgICAgdGhpcy5faGlkZUNvbXBs
ZXRpb25zKCk7CisgICAgICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IDI3KSB7Cisg
ICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBrZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOworICAg
ICAgICBpZiAoa2V5ID09PSAiVXAiKSB7CisgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29u
dHJvbGxlci5wcmV2aW91cygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGtleSA9PT0gIkRvd24iKSB7CisgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9u
Q29udHJvbGxlci5uZXh0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBfdGV4dElucHV0S2V5VXAoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd0NvbXBs
ZXRpb25zSWZBYmxlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yU3dhdGNoKCk7CisgICAg
ICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX3Nob3dDb21wbGV0aW9u
c0lmQWJsZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3ZhbHVlRGlkQ2hh
bmdlKCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGUodGhpcy52YWx1ZSkpIHsK
KyAgICAgICAgICAgIHZhciBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVu
dFJlY3QodGhpcy5fdGV4dElucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAg
ICAgIGlmICghYm91bmRzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
dGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuc2hvdyhib3VuZHMsIDIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgX2hpZGVDb21wbGV0aW9ucygpCisgICAgeworICAgICAgICB0aGlzLl9jb21w
bGV0aW9uQ29udHJvbGxlci5oaWRlKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDIyMDA3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtZWRpdG9yIHsKKyAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCBsaWdodGdyZXk7CisgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgZm9udC1zaXplOiAxMXB4Owor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCB7CisgICAgbWluLWhlaWdo
dDogNTFweDsKKyAgICBtYXgtaGVpZ2h0OiA5NHB4OworICAgIG1hcmdpbjogMDsKKyAgICBwYWRk
aW5nOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDIsIDI0MiwgMjQyKTsKKyAgICBv
dmVyZmxvdzogYXV0bzsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGxpc3Qtc3R5bGUtdHlwZTog
bm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0geworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDE3cHg7CisgICAgbGluZS1oZWln
aHQ6IDE3cHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWl0ZW06bnRoLWNoaWxkKG9kZCkgeworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS5zZWxlY3RlZCB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDM0LCAxMzEsIDI0NikgIWltcG9ydGFudDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtID4gOm1hdGNoZXMoYnV0dG9uLCBpbWcpIHsKKyAgICBk
aXNwbGF5OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMgewor
ICAgIHBhZGRpbmctbGVmdDogM3B4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS52aXN1
YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtLnNlbGVjdGVkOm5vdCguZWRpdG9yLWhpZGRl
bikgPiAudGl0bGVzID4gKiB7CisgICAgY29sb3I6IHRyYW5zcGFyZW50OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3Ig
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUt
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtaXRlbS52aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtID4gLnZp
c3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvciB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogM3B4OworICAgIGJvdHRv
bTogMDsKKyAgICBsZWZ0OiAzcHg7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgbGluZS1oZWlnaHQ6IDEzcHg7CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHRyYW5zcGFyZW50OworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGNvbG9y
OiB3aGl0ZTsKKyAgICB6LWluZGV4OiAxOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS52
aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtLmVkaXRvci1oaWRkZW4gPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9yIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMgPiAuc3VidGl0
bGUgeworICAgIGZvbnQtc2l6ZTogOXB4OworICAgIGNvbG9yOiBsaWdodGdyZXk7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVk
aXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1pdGVtOm5vdCgubm8tdmFsdWUpID4gLnRpdGxlcyA+IC5zdWJ0aXRs
ZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWNvbnRyb2xzIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGJvcmRlci10b3A6IDFweCBz
b2xpZCBsaWdodGdyZXk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250
cm9scyA+IGRpdiB7CisgICAgd2lkdGg6IDIwcHg7CisgICAgaGVpZ2h0OiAxOXB4OworICAgIHBh
ZGRpbmc6IDRweDsKKyAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBsaWdodGdyZXk7CisgICAg
b3BhY2l0eTogMC43OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJv
bHMgPiAudmlzdWFsLXN0eWxlLXJlbW92ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCB7CisgICAg
b3JkZXI6IDI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkyZTBlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5q
cwpAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBpbnNlcnRO
ZXdJdGVtc0JlZm9yZVNlbGVjdGVkLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1
cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJjb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1lZGl0b3IiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5faW5zZXJ0TmV3
SXRlbXNCZWZvcmVTZWxlY3RlZCA9IGluc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgfHwgZmFs
c2U7CisKKyAgICAgICAgdmFyIGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKKyAgICAgICAgbGlzdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QiKTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQobGlzdEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJh
dGVkS2V5d29yZHMgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKGxpc3RFbGVtZW50KTsK
KyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5vbnNlbGVjdCA9IHRoaXMuX29u
VHJlZUl0ZW1TZWxlY3QuYmluZCh0aGlzKTsKKworICAgICAgICB2YXIgY29udHJvbENvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBjb250cm9sQ29udGFp
bmVyLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1j
b250cm9scyIpOworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChjb250
cm9sQ29udGFpbmVyKTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdlcy9QbHVz
LnN2ZyIsICJ2aXN1YWwtc3R5bGUtYWRkLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBhZGQgYSBuZXcgaXRlbS4iKSwgZnVuY3Rpb24od3Jh
cHBlcikgeworICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkLmJpbmQodGhpcykpOworICAgICAgICAg
ICAgY29udHJvbENvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgfS5iaW5k
KHRoaXMpKTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdlcy9NaW51cy5zdmci
LCAidmlzdWFsLXN0eWxlLXJlbW92ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gcmVtb3ZlIHRoZSBzZWxlY3RlZCBpdGVtLiIpLCBmdW5j
dGlvbih3cmFwcGVyKSB7CisgICAgICAgICAgICB3cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fcmVtb3ZlU2VsZWN0ZWRDb21tYVNlcGFyYXRlZEtleXdvcmQuYmluZCh0aGlz
KSk7CisgICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXBwZXIpOwor
ICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gLyhc
Yi4rXGIpLzsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNldCBzZWxlY3RlZFRyZWVF
bGVtZW50VmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50
ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAg
ICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm5vLXZh
bHVlIiwgIXRleHQgfHwgIXRleHQubGVuZ3RoKTsKKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVu
dC5tYWluVGl0bGUgPSB0ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAg
IH0KKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2NvbW1hU2Vw
YXJhdGVkS2V5d29yZHMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIHZhbHVlID0gIiI7CisKKyAgICAgICAgZm9yICh2YXIgdHJlZUl0ZW0gb2YgdGhpcy5f
Y29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKHRoaXMu
X3RyZWVJdGVtSXNFbXB0eSh0cmVlSXRlbSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgdmFsdWUgKz0g
IiwgIjsKKworICAgICAgICAgICAgdmFyIHRleHQgPSB0cmVlSXRlbS5tYWluVGl0bGU7CisKKyAg
ICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fbW9kaWZ5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkID09
PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAgIHRleHQgPSB0aGlzLl9tb2RpZnlDb21tYVNl
cGFyYXRlZEtleXdvcmQodGV4dCk7CisKKyAgICAgICAgICAgIHZhbHVlICs9IHRleHQ7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgc2V0IHZhbHVlKGNv
bW1hU2VwYXJhdGVkVmFsdWUpCisgICAgeworICAgICAgICBpZiAoY29tbWFTZXBhcmF0ZWRWYWx1
ZSAmJiBjb21tYVNlcGFyYXRlZFZhbHVlID09PSB0aGlzLnZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMucmVtb3ZlQ2hpbGRy
ZW4oKTsKKworICAgICAgICBpZiAoIWNvbW1hU2VwYXJhdGVkVmFsdWUgfHwgIWNvbW1hU2VwYXJh
dGVkVmFsdWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
RXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIHZhbHVlcyA9IGNvbW1hU2VwYXJhdGVkVmFsdWUuc3BsaXQoL1xz
KixccyooPyFbXlwoXSpcKSkvKTsKKyAgICAgICAgZm9yICh2YXIgdmFsdWUgb2YgdmFsdWVzKQor
ICAgICAgICAgICAgdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlKTsKKworICAg
ICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuWzBdLnNlbGVjdCh0cnVl
KTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy52YWx1ZSB8fCBudWxsOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF9vblRyZWVJdGVtU2VsZWN0KGl0ZW0sIHNlbGVjdGVkQnlVc2VyKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmRzKCk7CisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCB7dGV4dDogaXRlbS5t
YWluVGl0bGV9KTsKKyAgICB9CisKKyAgICBfdHJlZUl0ZW1Jc0VtcHR5KGl0ZW0pCisgICAgewor
ICAgICAgICByZXR1cm4gIWl0ZW0uX21haW5UaXRsZSB8fCAhaXRlbS5fbWFpblRpdGxlLmxlbmd0
aDsKKyAgICB9CisKKyAgICBfYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKQorICAgIHsK
KyAgICAgICAgdmFyIG5ld0l0ZW0gPSB0aGlzLl9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQobnVs
bCwgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgp
OworICAgICAgICBuZXdJdGVtLnN1YnRpdGxlID0gIigiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlIikgKyAiKSI7CisgICAgICAg
IG5ld0l0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby12YWx1ZSIpOworICAgICAgICBuZXdJ
dGVtLnNlbGVjdCh0cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG5ld0l0ZW07CisgICAgfQor
CisgICAgX3JlbW92ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7CisgICAg
ICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jk
cy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAgICB0aGlzLl9yZW1vdmVDb21tYVNlcGFyYXRl
ZEtleXdvcmQoc2VsZWN0ZWRUcmVlRWxlbWVudCk7CisgICAgfQorCisgICAgX3JlbW92ZUVtcHR5
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkcygpCisgICAgeworICAgICAgICBmb3IgKHZhciB0cmVlSXRl
bSBvZiB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuKSB7CisgICAgICAgICAg
ICBpZiAoIXRoaXMuX3RyZWVJdGVtSXNFbXB0eSh0cmVlSXRlbSkgfHwgdHJlZUl0ZW0uc2VsZWN0
ZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRyZWVJdGVtLmRl
c2VsZWN0KCk7CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQo
dHJlZUl0ZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgX2FkZENvbW1hU2VwYXJhdGVkS2V5
d29yZCh2YWx1ZSwgaW5kZXgpCisgICAgeworICAgICAgICB2YXIgdmFsdWVFbGVtZW50ID0gdGhp
cy5fY3JlYXRlTmV3TGlzdEl0ZW0odmFsdWUpOworCisgICAgICAgIHZhciBpbmRleElzU2V0ID0g
IWlzTmFOKGluZGV4KTsKKyAgICAgICAgaWYgKGluZGV4SXNTZXQpIHsKKyAgICAgICAgICAgIHRo
aXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuaW5zZXJ0Q2hpbGQodmFsdWVFbGVtZW50LCBpbmRl
eElzU2V0ID8gaW5kZXggKyAhdGhpcy5faW5zZXJ0TmV3SXRlbXNCZWZvcmVTZWxlY3RlZCA6IDAp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29y
ZHMuYXBwZW5kQ2hpbGQodmFsdWVFbGVtZW50KTsKKworICAgICAgICByZXR1cm4gdmFsdWVFbGVt
ZW50OworICAgIH0KKworICAgIF9yZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQodHJlZUVsZW1l
bnQpCisgICAgeworICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMucmVtb3ZlQ2hpbGQodHJl
ZUVsZW1lbnQpOworCisgICAgICAgIGlmICghdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5j
aGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZl
bnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOworCisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdl
KCk7CisgICAgfQorCisgICAgX2NyZWF0ZU5ld0xpc3RJdGVtKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFt
ZSwgdmFsdWUpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSA9ICJ2aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSI7CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNv
bW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudCA9IHsKKyAgICBUcmVlSXRlbVNlbGVjdGVk
OiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvci10cmVlLWl0ZW0t
c2VsZWN0ZWQiLAorICAgIE5vUmVtYWluaW5nVHJlZUl0ZW1zOiAidmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvci1uby1yZW1haW5pbmctdHJlZS1pdGVtcyIKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41M2JmYzgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3Nz
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4g
LmhlYWRlciB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLnNpZGViYXIgPiAucGFu
ZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMt
c2VjdGlvbiA+IC5oZWFkZXIgPiBzcGFuIHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRlciA+IHNwYW46OmFmdGVyIHsKKyAg
ICB3aWR0aDogN3B4OworICAgIGhlaWdodDogN3B4OworICAgIG1hcmdpbjogNHB4IDZweDsKKyAg
ICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxMiwgOTIl
LCA1NCUpOworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBjb250ZW50OiAiIjsKK30KKworLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24g
LmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisK
Ky5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1z
ZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93IHsKKyAgICBk
aXNwbGF5OiBmbGV4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAu
dmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdy
b3VwID4gLnJvdzpsYXN0LWNoaWxkIHsKKyAgICBwYWRkaW5nLWJvdHRvbTogM3B4OworfQorCisu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2Vj
dGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5
bGUtc2VwYXJhdGVkLXJvdyB7CisgICAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgbGlnaHRn
cmV5OworICAgIG1hcmdpbi1ib3R0b206IDVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMnB4Owor
fQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10
aXRsZSB7CisgICAgd2lkdGg6IDU1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAu
Y29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6
bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1yaWdodDogMTFw
eDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbC5kaXNh
YmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlv
bikgeworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5k
ZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbikgaW5wdXQg
eworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmNiOWNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTAsMCArMSwxMTAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwKK3sKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGRl
bGVnYXRlLCAidmlzdWFsIiwgInZpc3VhbCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVz
IFx1MjAxNCBWaXN1YWwiKSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnByb3BlcnR5UmVmZXJl
bmNlSW5mb1RlbXAgPSB7fTsKKyAgICAgICAgdGhpcy5fY3VycmVudFJ1bGUgPSBudWxsOworCisg
ICAgICAgIHRoaXMuX3NlY3Rpb25zID0ge307CisgICAgICAgIHRoaXMuX2dyb3VwcyA9IHt9Owor
ICAgICAgICB0aGlzLl9rZXl3b3JkcyA9IHt9OworICAgICAgICB0aGlzLl91bml0cyA9IHt9Owor
ICAgICAgICB0aGlzLl9hdXRvY29tcGxldGlvblByb3BlcnR5RWRpdG9ycyA9IHt9OworCisgICAg
ICAgIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzID0gWyJJbmhlcml0IiwgIkluaXRpYWwiXTsKKyAg
ICAgICAgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJBdXRvIl0pOworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSA9IHsK
KyAgICAgICAgICAgIGJhc2ljOiB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb25l
IiwgIkhpZGRlbiIsICJTb2xpZCJdKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkRhc2hlZCIs
ICJEb3R0ZWQiLCAiRG91YmxlIiwgIkdyb292ZSIsICJIaWRkZW4iLCAiSW5zZXQiLCAiTm9uZSIs
ICJPdXRzZXQiLCAiUmlkZ2UiLCAiU29saWQiXQorICAgICAgICB9OworICAgICAgICB0aGlzLl9r
ZXl3b3Jkcy5ib3JkZXJXaWR0aCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk1l
ZGl1bSIsICJUaGljayIsICJUaGluIl0pOworCisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRz
U2Fuc1BlcmNlbnQgPSB7CisgICAgICAgICAgICBiYXNpYzogWyJweCIsICJlbSJdLAorICAgICAg
ICAgICAgYWR2YW5jZWQ6IFsiY2giLCAiY20iLCAiZXgiLCAiaW4iLCAibW0iLCAicGMiLCAicHQi
LCAicmVtIiwgInZoIiwgInZ3IiwgInZtYXgiLCAidm1pbiJdCisgICAgICAgIH07CisgICAgICAg
IHRoaXMuX3VuaXRzLmRlZmF1bHRzID0geworICAgICAgICAgICAgYmFzaWM6IFsiJSJdLmNvbmNh
dCh0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmJhc2ljKSwKKyAgICAgICAgICAgIGFk
dmFuY2VkOiB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmFkdmFuY2VkCisgICAgICAg
IH07CisKKyAgICAgICAgLy8gU2VsZWN0b3IgU2VjdGlvbgorICAgICAgICB0aGlzLl9zZWxlY3Rv
clNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uKHRo
aXMpOworICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uRXZlbnQuU2VsZWN0b3JDaGFuZ2Vk
LCB0aGlzLl91cGRhdGVTZWN0aW9ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fc2VsZWN0b3JTZWN0aW9uLmVsZW1lbnQpOworCisgICAgICAgIC8vIExh
eW91dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZGlzcGxheSIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRGlzcGxheSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJwb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUG9zaXRpb24iKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxvYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZsb2F0IGFuZCBDbGVhciIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJk
aW1lbnNpb25zIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaW1lbnNpb25zIikpOworICAgICAg
ICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oIm1hcmdpbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TWFyZ2luIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInBhZGRpbmciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlBhZGRpbmciKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2Vj
dGlvbigiZmxleGJveCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxleGJveCIpKTsKKworICAg
ICAgICB0aGlzLl9zZWN0aW9ucy5sYXlvdXQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uKCJsYXlvdXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91dCIpLCBbdGhpcy5fZ3Jv
dXBzLmRpc3BsYXkuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnBvc2l0aW9uLnNlY3Rpb24sIHRoaXMu
X2dyb3Vwcy5mbG9hdC5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZGltZW5zaW9ucy5zZWN0aW9uLCB0
aGlzLl9ncm91cHMubWFyZ2luLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5wYWRkaW5nLnNlY3Rpb24s
IHRoaXMuX2dyb3Vwcy5mbGV4Ym94LnNlY3Rpb25dKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5sYXlvdXQuZWxlbWVudCk7CisKKyAgICAgICAgLy8g
VGV4dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigidGV4dC1zdHlsZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRl
U2VjdGlvbigiZm9udCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9udCIpKTsKKyAgICAgICAg
dGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXNwYWNpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNwYWNpbmciKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigidGV4dC1zaGFk
b3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRvdyIpKTsKKworICAgICAgICB0aGlzLl9z
ZWN0aW9ucy50ZXh0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigidGV4dCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVGV4dCIpLCBbdGhpcy5fZ3JvdXBzLnRleHRTdHlsZS5zZWN0
aW9uLCB0aGlzLl9ncm91cHMuZm9udC5zZWN0aW9uLCB0aGlzLl9ncm91cHMudGV4dFNwYWNpbmcu
c2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnRleHRTaGFkb3cuc2VjdGlvbl0pOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLnRleHQuZWxlbWVudCk7CisKKyAg
ICAgICAgLy8gQmFja2dyb3VuZCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlv
bigiYmFja2dyb3VuZC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYm9yZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJCb3JkZXIiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigib3V0bGluZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3V0bGluZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJh
dGVTZWN0aW9uKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFkb3ciKSk7
CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMuYmFja2dyb3VuZCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24oImJhY2tncm91bmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJhY2tn
cm91bmQiKSwgW3RoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5kU3R5bGUuc2VjdGlvbiwgdGhpcy5fZ3Jv
dXBzLmJvcmRlci5zZWN0aW9uLCB0aGlzLl9ncm91cHMub3V0bGluZS5zZWN0aW9uLCB0aGlzLl9n
cm91cHMuYm94U2hhZG93LnNlY3Rpb25dKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kLmVsZW1lbnQpOworCisgICAgICAgIC8vIEFu
aW1hdGlvbiBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigidHJhbnNpdGlv
biIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNpdGlvbiIpKTsKKworICAgICAgICB0aGlz
Ll9zZWN0aW9ucy5hbmltYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJh
bmltYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuaW1hdGlvbiIpLCBbdGhpcy5fZ3Jv
dXBzLnRyYW5zaXRpb24uc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbi5lbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBQ
dWJsaWMKKworICAgIHJlZnJlc2goc2lnbmlmaWNhbnRDaGFuZ2UpCisgICAgeworICAgICAgICBp
ZiAoc2lnbmlmaWNhbnRDaGFuZ2UpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlv
bi51cGRhdGUodGhpcy5fbm9kZVN0eWxlcyk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWN0
aW9ucygpOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgpOworICAgIH0KKwor
ICAgIC8vIFByaXZhdGUKKworICAgIF9nZW5lcmF0ZVNlY3Rpb24oaWQsIGRpc3BsYXlOYW1lKQor
ICAgIHsKKyAgICAgICAgaWYgKCFpZCB8fCAhZGlzcGxheU5hbWUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgZnVuY3Rpb24gcmVwbGFjZURhc2hXaXRoQ2FwaXRhbChtYXRjaCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoIi0iLCAiIikudG9VcHBl
ckNhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjYW1lbENhc2VJZCA9IGlkLnJlcGxh
Y2UoLy1cYlx3L2csIHJlcGxhY2VEYXNoV2l0aENhcGl0YWwpOworCisgICAgICAgIHRoaXMuX2dy
b3Vwc1tjYW1lbENhc2VJZF0gPSB7CisgICAgICAgICAgICBzZWN0aW9uOiBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uKGlkLCBkaXNwbGF5TmFtZSwgW10pLAorICAgICAgICAgICAgcHJv
cGVydGllczoge30KKyAgICAgICAgfTsKKworICAgICAgICB2YXIgcG9wdWxhdGVGdW5jdGlvbiA9
IHRoaXNbIl9wb3B1bGF0ZSIgKyBjYW1lbENhc2VJZC5jYXBpdGFsaXplKCkgKyAiU2VjdGlvbiJd
OworICAgICAgICBwb3B1bGF0ZUZ1bmN0aW9uLmNhbGwodGhpcyk7CisgICAgfQorCisgICAgX3Vw
ZGF0ZVNlY3Rpb25zKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFJ1bGUgPSB0
aGlzLl9zZWxlY3RvclNlY3Rpb24uY3VycmVudFJ1bGUoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9j
dXJyZW50UnVsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZGlzYWJsZWQg
PSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgdGhpcy5fY3VycmVu
dFJ1bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRd
KTsKKyAgICAgICAgaWYgKGRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGZvciAodmFyIGtleSBpbiB0aGlzLl9ncm91cHMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVQ
cm9wZXJ0aWVzKHRoaXMuX2dyb3Vwc1trZXldLCAhIWV2ZW50KTsKKworICAgICAgICBmb3IgKHZh
ciBrZXkgaW4gdGhpcy5fc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBzZWN0aW9uID0gdGhp
cy5fc2VjdGlvbnNba2V5XTsKKyAgICAgICAgICAgIHZhciBvbmVTZWN0aW9uRXhwYW5kZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIGdyb3VwIG9mIHNlY3Rpb24uZ3JvdXBzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFncm91cC5jb2xsYXBzZWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgb25lU2VjdGlvbkV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAob25l
U2VjdGlvbkV4cGFuZGVkKQorICAgICAgICAgICAgICAgIHNlY3Rpb24uY29sbGFwc2VkID0gZmFs
c2U7CisgICAgICAgICAgICBlbHNlIGlmICghc2VjdGlvbi5leHBhbmRlZEJ5VXNlcikKKyAgICAg
ICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBfdXBkYXRlUHJvcGVydGllcyhncm91cCwgZm9yY2VTdHlsZVVwZGF0ZSkKKyAgICB7Cisg
ICAgICAgIGlmICghZ3JvdXAuc2VjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2YXIgaW5pdGlhbFRleHRMaXN0ID0gdGhpcy5fY3VycmVudFJ1bGVbV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdF07Cisg
ICAgICAgIGlmICghaW5pdGlhbFRleHRMaXN0KQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFJ1
bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNl
Y3Rpb25UZXh0TGlzdF0gPSBpbml0aWFsVGV4dExpc3QgPSBuZXcgV2Vha01hcDsKKworICAgICAg
ICB2YXIgaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFp
bml0aWFsVGV4dExpc3QuaGFzKGdyb3VwKSkgeworICAgICAgICAgICAgdmFyIGluaXRpYWxQcm9w
ZXJ0eVRleHQgPSB7fTsKKyAgICAgICAgICAgIGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nID0g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gZmFs
c2U7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKSB7CisgICAgICAg
ICAgICB2YXIgcHJvcGVydHlFZGl0b3IgPSBncm91cC5wcm9wZXJ0aWVzW2tleV07CisgICAgICAg
ICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUoIXByb3BlcnR5RWRpdG9yLnN0eWxlIHx8IGZvcmNl
U3R5bGVVcGRhdGUgPyB0aGlzLl9jdXJyZW50UnVsZSA6IG51bGwpOworCisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBwcm9wZXJ0eUVkaXRvci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICAgICAg
aWYgKHZhbHVlICYmICFwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpIHsKKyAgICAgICAg
ICAgICAgICBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAo
aW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxQ
cm9wZXJ0eVRleHRba2V5XSA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG9uZVByb3BlcnR5SGFzVmFsdWUpCisgICAgICAgICAgICBncm91cC5zZWN0aW9u
LmNvbGxhcHNlZCA9IGZhbHNlOworICAgICAgICBlbHNlIGlmICghZ3JvdXAuc2VjdGlvbi5leHBh
bmRlZEJ5VXNlcikKKyAgICAgICAgICAgIGdyb3VwLnNlY3Rpb24uY29sbGFwc2VkID0gdHJ1ZTsK
KworICAgICAgICBpZiAoaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICBp
bml0aWFsVGV4dExpc3Quc2V0KGdyb3VwLCBpbml0aWFsUHJvcGVydHlUZXh0KTsKKyAgICAgICAg
dGhpcy5fc2VjdGlvbk1vZGlmaWVkKGdyb3VwKTsKKworICAgICAgICB2YXIgYXV0b2NvbXBsZXRl
Q29tcGF0aWJsZVByb3BlcnRpZXMgPSBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVy
dGllczsKKyAgICAgICAgaWYgKCFhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyB8fCAh
YXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGZvciAodmFyIGVkaXRvciBvZiBhdXRvY29tcGxldGVDb21wYXRpYmxl
UHJvcGVydGllcykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGli
bGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlU3R5bGVVcGRhdGUpOworICAgIH0KKworICAg
IF91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlFZGl0b3IoZWRpdG9yLCBmb3Jj
ZSkKKyAgICB7CisgICAgICAgIGlmICghZWRpdG9yIHx8IChlZGl0b3IuaGFzQ29tcGxldGlvbnMg
JiYgIWZvcmNlKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlZGl0b3IuY29tcGxl
dGlvbnMgPSBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KGVk
aXRvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOworICAgIH0KKworICAgIF9zZWN0aW9uTW9kaWZp
ZWQoZ3JvdXApCisgICAgeworICAgICAgICBncm91cC5zZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgibW9kaWZpZWQiLCB0aGlzLl9pbml0aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQoZ3Jv
dXApKTsKKyAgICB9CisKKyAgICBfaW5pdGlhbFByb3BlcnR5VGV4dE1vZGlmaWVkKGdyb3VwKQor
ICAgIHsKKyAgICAgICAgaWYgKCFncm91cC5wcm9wZXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHZhciBpbml0aWFsUHJvcGVydHlUZXh0TGlzdCA9IHRoaXMuX2N1
cnJlbnRSdWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJv
cGVydHlTZWN0aW9uVGV4dExpc3RdLmdldChncm91cCk7CisgICAgICAgIGlmICghaW5pdGlhbFBy
b3BlcnR5VGV4dExpc3QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9y
ICh2YXIga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0
eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFsdWU7Cisg
ICAgICAgICAgICBpZiAodmFsdWUgJiYgaW5pdGlhbFByb3BlcnR5VGV4dExpc3Rba2V5XSAhPT0g
dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgX3BvcHVsYXRlU2VjdGlvbihncm91cCwgZ3Jv
dXBzKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cCB8fCAhZ3JvdXBzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGdyb3VwLnNlY3Rpb24uZ3JvdXBzID0gZ3JvdXBzOworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykKKyAgICAgICAgICAgIGdyb3VwLnBy
b3BlcnRpZXNba2V5XS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCB0aGlzLl9zZWN0aW9uTW9kaWZpZWQu
YmluZCh0aGlzLCBncm91cCkpOworICAgIH0KKworICAgIF9wb3B1bGF0ZURpc3BsYXlTZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaXNwbGF5OworICAg
ICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGRp
c3BsYXlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuZGlzcGxheSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3Jk
UGlja2VyKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNwbGF5IiksIHsKKyAg
ICAgICAgICAgIGJhc2ljOiBbIk5vbmUiLCAiQmxvY2siLCAiRmxleCIsICJJbmxpbmUiLCAiSW5s
aW5lIEJsb2NrIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyJDb21wYWN0IiwgIklubGluZSBG
bGV4IiwgIklubGluZSBUYWJsZSIsICJMaXN0IEl0ZW0iLCAiVGFibGUiLCAiVGFibGUgQ2FwdGlv
biIsICJUYWJsZSBDZWxsIiwgIlRhYmxlIENvbHVtbiIsICJUYWJsZSBDb2x1bW4gR3JvdXAiLCAi
VGFibGUgRm9vdGVyIEdyb3VwIiwgIlRhYmxlIEhlYWRlciBHcm91cCIsICJUYWJsZSBSb3ciLCAi
VGFibGUgUm93IEdyb3VwIiwgIiBXQVAgTWFycXVlZSIsICIgV2Via2l0IEJveCIsICIgV2Via2l0
IEdyaWQiLCAiIFdlYmtpdCBJbmxpbmUgQm94IiwgIiBXZWJraXQgSW5saW5lIEdyaWQiXQorICAg
ICAgICB9KTsKKyAgICAgICAgcHJvcGVydGllcy52aXNpYmlsaXR5ID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInZpc2liaWxpdHkiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlZpc2liaWxpdHkiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiSGlkZGVuIiwgIlZp
c2libGUiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbGxhcHNlIl0KKyAgICAgICAgfSk7
CisKKyAgICAgICAgZGlzcGxheVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZGlz
cGxheS5lbGVtZW50KTsKKyAgICAgICAgZGlzcGxheVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMudmlzaWJpbGl0eS5lbGVtZW50KTsKKworICAgICAgICB2YXIgc2l6aW5nUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmJveFNpemluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJi
b3gtc2l6aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXppbmciKSwgdGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMuY29uY2F0KFsiQm9yZGVyIEJveCIsICJDb250ZW50IEJveCJdKSk7CisgICAg
ICAgIHByb3BlcnRpZXMuY3Vyc29yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIoImN1cnNvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3Vyc29yIiksIHsKKyAg
ICAgICAgICAgIGJhc2ljOiBbIkF1dG8iLCAiRGVmYXVsdCIsICJOb25lIiwgIlBvaW50ZXIiLCAi
Q3Jvc3NoYWlyIiwgIlRleHQiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbnRleHQgTWVu
dSIsICJIZWxwIiwgIlByb2dyZXNzIiwgIldhaXQiLCAiQ2VsbCIsICJWZXJ0aWNhbCBUZXh0Iiwg
IkFsaWFzIiwgIkNvcHkiLCAiTW92ZSIsICJObyBEcm9wIiwgIk5vdCBBbGxvd2VkIiwgIkFsbCBT
Y3JvbGwiLCAiQ29sIFJlc2l6ZSIsICJSb3cgUmVzaXplIiwgIk4gUmVzaXplIiwgIkUgUmVzaXpl
IiwgIlMgUmVzaXplIiwgIlcgUmVzaXplIiwgIk5TIFJlc2l6ZSIsICJFVyBSZXNpemUiLCAiTkUg
UmVzaXplIiwgIk5XIFJlc2l6ZSIsICJTRSBSZXNpemUiLCAic1cgUmVzaXplIiwgIk5FU1cgUmVz
aXplIiwgIk5XU0UgUmVzaXplIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgc2l6aW5nUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3hTaXppbmcuZWxlbWVudCk7CisgICAgICAg
IHNpemluZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuY3Vyc29yLmVsZW1lbnQp
OworCisgICAgICAgIHZhciBvdmVyZmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5vcGFjaXR5ID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVVuaXRTbGlkZXIoIm9wYWNpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik9wYWNpdHkiKSk7CisgICAgICAgIHByb3BlcnRpZXMub3ZlcmZsb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcihbIm92ZXJmbG93LXgiLCAib3ZlcmZsb3cteSJd
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk92ZXJmbG93IiksIHsKKyAgICAgICAgICAgIGJhc2lj
OiBbIkluaXRpYWwiLCAiQXV0byIsICJIaWRkZW4iLCAiU2Nyb2xsIiwgIlZpc2libGUiXSwKKyAg
ICAgICAgICAgIGFkdmFuY2VkOiBbIk1hcnF1ZWUiLCAiT3ZlcmxheSIsICIgV2Via2l0IFBhZ2Vk
IFgiLCAiIFdlYmtpdCBQYWdlZCBZIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgb3ZlcmZsb3dS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm9wYWNpdHkuZWxlbWVudCk7CisgICAg
ICAgIG92ZXJmbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdmVyZmxvdy5l
bGVtZW50KTsKKworICAgICAgICB2YXIgZGlzcGxheUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFtkaXNwbGF5Um93LCBzaXppbmdSb3csIG92ZXJmbG93Um93XSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Rpc3BsYXlHcm91cF0pOwor
ICAgIH0KKworICAgIF9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBwcmVmaXgsIGFs
bG93TmVnYXRpdmVzKQorICAgIHsKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9w
ZXJ0aWVzOworCisgICAgICAgIHZhciBoYXNQcmVmaXggPSBwcmVmaXggJiYgcHJlZml4Lmxlbmd0
aDsKKyAgICAgICAgdmFyIHByb3BlcnR5TmFtZVByZWZpeCA9IGhhc1ByZWZpeCA/IHByZWZpeCAr
ICItIiA6ICIiOworCisgICAgICAgIHZhciB0b3AgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiVG9w
IiA6ICJ0b3AiOworICAgICAgICB2YXIgYm90dG9tID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIkJv
dHRvbSIgOiAiYm90dG9tIjsKKyAgICAgICAgdmFyIGxlZnQgPSBoYXNQcmVmaXggPyBwcmVmaXgg
KyAiTGVmdCIgOiAibGVmdCI7CisgICAgICAgIHZhciByaWdodCA9IGhhc1ByZWZpeCA/IHByZWZp
eCArICJSaWdodCIgOiAicmlnaHQiOworCisgICAgICAgIHZhciB2ZXJ0aWNhbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllc1t0b3BdID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVBy
ZWZpeCArICJ0b3AiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCB0aGlzLl9rZXl3b3Jk
cy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzKTsKKyAgICAg
ICAgcHJvcGVydGllc1tib3R0b21dID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJib3R0b20iLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkJvdHRvbSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVm
YXVsdHMsIGFsbG93TmVnYXRpdmVzLCB0cnVlKTsKKyAgICAgICAgdmFyIHZlcnRpY2FsTGluayA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRp
ZXNbdG9wXSwgcHJvcGVydGllc1tib3R0b21dXSwgImxpbmstdmVydGljYWwiKTsKKworICAgICAg
ICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXNbdG9wXS5lbGVtZW50KTsK
KyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZCh2ZXJ0aWNhbExpbmsuZWxlbWVu
dCk7CisgICAgICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tib3R0
b21dLmVsZW1lbnQpOworCisgICAgICAgIHZhciBob3Jpem9udGFsID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW2xlZnRdID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCAr
ICJsZWZ0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0IiksIHRoaXMuX2tleXdvcmRzLmJv
eE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBw
cm9wZXJ0aWVzW3JpZ2h0XSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveChwcm9wZXJ0eU5hbWVQcmVmaXggKyAicmlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywg
YWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICB2YXIgaG9yaXpvbnRhbExpbmsgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rKFtwcm9wZXJ0aWVzW2xl
ZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0sICJsaW5rLWhvcml6b250YWwiKTsKKworICAgICAgICBo
b3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tsZWZ0XS5lbGVtZW50KTsK
KyAgICAgICAgaG9yaXpvbnRhbC5lbGVtZW50LmFwcGVuZENoaWxkKGhvcml6b250YWxMaW5rLmVs
ZW1lbnQpOworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
c1tyaWdodF0uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGFsbExpbmtSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICB2YXIgYWxsTGluayA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwg
cHJvcGVydGllc1tib3R0b21dLCBwcm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0s
ICJsaW5rLWFsbCIsIFt2ZXJ0aWNhbExpbmssIGhvcml6b250YWxMaW5rXSk7CisgICAgICAgIGFs
bExpbmtSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChhbGxMaW5rLmVsZW1lbnQpOworCisgICAgICAg
IHJldHVybiBbdmVydGljYWwsIGFsbExpbmtSb3csIGhvcml6b250YWxdOworICAgIH0KKworICAg
IF9wb3B1bGF0ZVBvc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0
aGlzLl9ncm91cHMucG9zaXRpb247CisgICAgICAgIHZhciByb3dzID0gdGhpcy5fZ2VuZXJhdGVN
ZXRyaWNTZWN0aW9uUm93cyhncm91cCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIHZhciBwcm9wZXJ0
aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgcG9zaXRpb25UeXBlID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnBv
c2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInBvc2l0
aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHsKKyAgICAgICAgICAgIGJhc2lj
OiBbIlN0YXRpYyIsICJSZWxhdGl2ZSIsICJBYnNvbHV0ZSIsICJGaXhlZCJdLAorICAgICAgICAg
ICAgYWR2YW5jZWQ6IFsiIFdlYmtpdCBTdGlja3kiXQorICAgICAgICB9KTsKKyAgICAgICAgcHJv
cGVydGllcy56SW5kZXggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goInotaW5kZXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInotSW5kZXgiKSwgdGhpcy5fa2V5
d29yZHMuYm94TW9kZWwsIG51bGwsIHRydWUpOworCisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMucG9zaXRpb24uZWxlbWVudCk7CisgICAgICAgIHBv
c2l0aW9uVHlwZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuekluZGV4LmVsZW1lbnQp
OworICAgICAgICBwb3NpdGlvblR5cGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtc2VwYXJhdGVkLXJvdyIpOworCisgICAgICAgIHJvd3MudW5zaGlmdChwb3NpdGlvblR5cGUp
CisKKyAgICAgICAgdmFyIHBvc2l0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAocm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwg
W3Bvc2l0aW9uR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbG9hdFNlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsb2F0OworICAgICAgICB2
YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGZsb2F0Um93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLmZsb2F0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgi
ZmxvYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IiksIFsiTGVmdCIsICJSaWdodCIs
ICJOb25lIl0pOworICAgICAgICBmbG9hdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuZmxvYXQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGNsZWFyUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNsZWFyID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiY2xlYXIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiksIFsiTGVmdCIsICJSaWdodCIsICJCb3RoIiwgIk5vbmUi
XSk7CisgICAgICAgIGNsZWFyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jbGVh
ci5lbGVtZW50KTsKKworICAgICAgICB2YXIgZmxvYXRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbZmxvYXRSb3csIGNsZWFyUm93XSk7CisgICAgICAgIHRoaXMu
X3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Zsb2F0R3JvdXBdKTsKKyAgICB9CisKKyAgICBfYWRk
TWV0cmljc01vdXNlTGlzdGVuZXJzKGVkaXRvciwgaGlnaGxpZ2h0Q29uZmlnKQorICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gb25FZGl0b3JNb3VzZW92ZXIoKSB7CisgICAgICAgICAgICBpZiAoIXRo
aXMuX3N0eWxlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCF0
aGlzLl9zdHlsZS5vd25lclJ1bGUpIHsKKyAgICAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgNik6IE9yZGVyIG9mIHBhcmFtZXRlcnMgY2hhbmdlZCBpbiBpT1MgNy4KKyAgICAgICAg
ICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9zdHls
ZS5ub2RlLmlkLCBoaWdobGlnaHRDb25maWd9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChET01BZ2VudC5oaWdobGlnaHRTZWxlY3Rv
cikKKyAgICAgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHRTZWxlY3RvcihoaWdobGlnaHRD
b25maWcsIHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zZWxlY3RvclRleHQsIHRoaXMuX3N0eWxlLm5v
ZGUub3duZXJEb2N1bWVudC5mcmFtZUlkZW50aWZpZXIpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25FZGl0b3JNb3VzZW91dCgpIHsKKyAgICAgICAgICAgIERPTUFnZW50LmhpZGVI
aWdobGlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlb3ZlciIsIG9uRWRpdG9yTW91c2VvdmVyLmJpbmQoZWRpdG9yKSk7Cisg
ICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwgb25FZGl0
b3JNb3VzZW91dC5iaW5kKGVkaXRvcikpOworICAgIH0KKworICAgIF9wb3B1bGF0ZURpbWVuc2lv
bnNTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaW1l
bnNpb25zOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAg
ICAgICAgdmFyIGRpbWVuc2lvbnNXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy53aWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigid2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgZGltZW5zaW9uc1dpZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy53aWR0aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgZGltZW5zaW9uc0hlaWdodCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5o
ZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIo
ImhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRz
LmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgZGltZW5z
aW9uc0hlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuaGVpZ2h0LmVsZW1lbnQp
OworCisgICAgICAgIHZhciBkaW1lbnNpb25zUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLndpZHRo
LCBwcm9wZXJ0aWVzLmhlaWdodF07CisgICAgICAgIHZhciBkaW1lbnNpb25zR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNXaWR0aCwgZGltZW5z
aW9uc0hlaWdodF0pOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWluV2lkdGggPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWluV2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1p
bi13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMu
Ym94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWlu
V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1pbldpZHRoLmVsZW1lbnQpOwor
CisgICAgICAgIHZhciBkaW1lbnNpb25zTWluSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbkhlaWdodCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLWhlaWdodCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0
aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbkhlaWdodC5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluSGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAg
IHZhciBkaW1lbnNpb25zTWluUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1pbldpZHRoLCBwcm9w
ZXJ0aWVzLm1pbkhlaWdodF07CisgICAgICAgIHZhciBkaW1lbnNpb25zTWluR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNaW5XaWR0aCwgZGlt
ZW5zaW9uc01pbkhlaWdodF0pOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4S2V5d29yZHMg
PSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoIk5vbmUiKTsKKyAgICAgICAgdmFyIGRp
bWVuc2lvbnNNYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy5tYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWF4LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJXaWR0aCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBkaW1lbnNpb25zTWF4V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLm1heFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4SGVpZ2h0
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLm1heEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJl
clNsaWRlcigibWF4LWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRp
bWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRp
bWVuc2lvbnNNYXhIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1heEhlaWdo
dC5lbGVtZW50KTsKKworICAgICAgICB2YXIgZGltZW5zaW9uc01heFByb3BlcnRpZXMgPSBbcHJv
cGVydGllcy5tYXhXaWR0aCwgcHJvcGVydGllcy5tYXhIZWlnaHRdOworICAgICAgICB2YXIgZGlt
ZW5zaW9uc01heEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtk
aW1lbnNpb25zTWF4V2lkdGgsIGRpbWVuc2lvbnNNYXhIZWlnaHRdKTsKKworICAgICAgICB2YXIg
ZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc0NvbnRyb2xsZXIoeworICAgICAgICAgICAgImRlZmF1bHQiOiB7dGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVmYXVsdCIpLCBlbGVtZW50OiBkaW1lbnNpb25zR3Jv
dXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc1Byb3BlcnRpZXN9LAorICAgICAgICAg
ICAgIm1pbiI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNaW4iKSwgZWxlbWVudDog
ZGltZW5zaW9uc01pbkdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lvbnNNaW5Qcm9w
ZXJ0aWVzfSwKKyAgICAgICAgICAgICJtYXgiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTWF4IiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNNYXhHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVz
OiBkaW1lbnNpb25zTWF4UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAgICAgdmFyIGhp
Z2hsaWdodENvbmZpZyA9IHtjb250ZW50Q29sb3I6IHtyOiAxMTEsIGc6IDE2OCwgYjogMjIwLCBh
OiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy53aWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuaGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5taW5XaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWluSGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5tYXhXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4SGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNUYWJDb250cm9sbGVy
LCBkaW1lbnNpb25zR3JvdXAsIGRpbWVuc2lvbnNNaW5Hcm91cCwgZGltZW5zaW9uc01heEdyb3Vw
XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2RpbWVuc2lvbnNHcm91
cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZU1hcmdpblNlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLm1hcmdpbjsKKyAgICAgICAgdmFyIHJvd3MgPSB0
aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAibWFyZ2luIiwgdHJ1ZSk7CisK
KyAgICAgICAgdmFyIGhpZ2hsaWdodENvbmZpZyA9IHttYXJnaW5Db2xvcjoge3I6IDI0NiwgZzog
MTc4LCBiOiAxMDcsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2Fk
ZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblRvcCwgaGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3Vw
LnByb3BlcnRpZXMubWFyZ2luQm90dG9tLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5MZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5tYXJnaW5SaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAg
ICB2YXIgbWFyZ2luR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
cm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW21hcmdpbkdyb3Vw
XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlUGFkZGluZ1NlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLnBhZGRpbmc7CisgICAgICAgIHZhciByb3dzID0g
dGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgInBhZGRpbmciKTsKKworICAg
ICAgICB2YXIgaGlnaGxpZ2h0Q29uZmlnID0ge3BhZGRpbmdDb2xvcjoge3I6IDE0NywgZzogMTk2
LCBiOiAxMjUsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdUb3AsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLnBhZGRpbmdCb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdMZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5wYWRkaW5nUmlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAg
ICAgdmFyIHBhZGRpbmdHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91
cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcGFkZGluZ0dy
b3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRmxleGJveFNlY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsZXhib3g7CisgICAgICAgIHZhciBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgZmxleE9yZGVyUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
Lm9yZGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvcmRl
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JkZXIiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMpOworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhCYXNpcyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1iYXNpcyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQmFzaXMiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
LCB0cnVlKTsKKworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm9yZGVyLmVsZW1lbnQpOworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhCYXNpcy5lbGVtZW50KTsKKworICAgICAgICB2YXIgZmxl
eFNpemVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuZmxleEdyb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImZsZXgtZ3JvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiR3JvdyIpLCB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cywgbnVsbCk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFNocmlu
ayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1zaHJp
bmsiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNocmluayIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZh
dWx0cywgbnVsbCk7CisKKyAgICAgICAgZmxleFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmZsZXhHcm93LmVsZW1lbnQpOworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleFNocmluay5lbGVtZW50KTsKKworICAgICAgICB2
YXIgZmxleEZsb3dSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuZmxleERpcmVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJmbGV4LWRpcmVjdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIlJvdyIsICJS
b3cgUmV2ZXJzZSIsICJDb2x1bW4iLCAiQ29sdW1uIFJldmVyc2UiXSkpOworICAgICAgICBwcm9w
ZXJ0aWVzLmZsZXhXcmFwID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNr
ZXIoImZsZXgtd3JhcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV3JhcCIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJXcmFwIiwgIldyYXAgUmV2ZXJzZSIsICJOb3dyYXAiXSkp
OworCisgICAgICAgIGZsZXhGbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5m
bGV4RGlyZWN0aW9uLmVsZW1lbnQpOworICAgICAgICBmbGV4Rmxvd1Jvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuZmxleFdyYXAuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGZsZXhi
b3hHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZmxleE9yZGVy
Um93LCBmbGV4U2l6ZVJvdywgZmxleEZsb3dSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBbZmxleGJveEdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVGV4
dFN0eWxlU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
dGV4dFN0eWxlOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisK
KyAgICAgICAgdmFyIHRleHRBcHBlYXJhbmNlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJjb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMudGV4dERpcmVjdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJkaXJlY3Rpb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpcmVjdGlvbiIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJM
VFIiLCAiUlRMIl0pKTsKKworICAgICAgICB0ZXh0QXBwZWFyYW5jZVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuY29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRBcHBlYXJhbmNl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0RGlyZWN0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIHZhciB0ZXh0QWxpZ25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudGV4dEFsaWduID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgidGV4dC1hbGlnbiIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQWxpZ24iKSwgWyJMZWZ0IiwgIkNlbnRlciIsICJSaWdodCIsICJKdXN0aWZ5
Il0pOworCisgICAgICAgIHRleHRBbGlnblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMudGV4dEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0VHJhbnNmb3JtUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LnRleHRUcmFuc2Zvcm0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LXRyYW5zZm9ybSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmb3JtIiks
IFsiQ2FwaXRhbGl6ZSIsICJVcHBlcmNhc2UiLCAiTG93ZXJjYXNlIiwgIk5vbmUiXSk7CisKKyAg
ICAgICAgdGV4dFRyYW5zZm9ybVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4
dFRyYW5zZm9ybS5lbGVtZW50KTsKKworICAgICAgICB2YXIgdGV4dERlY29yYXRpb25Sb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
dGV4dERlY29yYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LWRlY29yYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlY29yYXRpb24i
KSwgWyJVbmRlcmxpbmUiLCAiTGluZSBUaHJvdWdoIiwgIk92ZXJsaW5lIiwgIk5vbmUiXSk7CisK
KyAgICAgICAgdGV4dERlY29yYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LnRleHREZWNvcmF0aW9uLmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuY29sb3JdOworCisgICAgICAgIHZhciB0
ZXh0U3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4
dEFwcGVhcmFuY2VSb3csIHRleHRBbGlnblJvdywgdGV4dFRyYW5zZm9ybVJvdywgdGV4dERlY29y
YXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFN0
eWxlR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGb250U2VjdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZm9udDsKKyAgICAgICAgdmFyIHByb3Bl
cnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBmb250RmFtaWx5Um93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmZvbnRGYW1pbHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RF
ZGl0b3IoImZvbnQtZmFtaWx5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGYW1pbHkiKSk7CisK
KyAgICAgICAgZm9udEZhbWlseVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9u
dEZhbWlseS5lbGVtZW50KTsKKworICAgICAgICB2YXIgZm9udFNpemVSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZvbnQtc2l6ZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJMYXJnZXIiLCAiWFggTGFyZ2UiLCAiWCBMYXJnZSIsICJMYXJnZSIsICJNZWRpdW0i
LCAiU21hbGwiLCAiWCBTbWFsbCIsICJYWCBTbWFsbCIsICJTbWFsbGVyIl0pLCB0aGlzLl91bml0
cy5kZWZhdWx0cyk7CisKKyAgICAgICAgLy8gVE9ETzogSW50ZXJzcGVyc2UgbnVtZXJpY2FsIGZv
bnQtd2VpZ2h0IHZhbHVlcyBiZXR3ZWVuIHRoZSBvdGhlciBrZXl3b3Jkcy4gIFNvbWV0aGluZyBs
aWtlIHRoaXM6CisgICAgICAgIC8vICBbIjkwMCIsICJib2xkZXIiLCAiODAwIiwgImJvbGQiLCAi
NjAwIiwgIjUwMCIsICJub3JtYWwiLCAiMzAwIiwgIjIwMCIsICJsaWdodGVyIiwgIjEwMCJdCisg
ICAgICAgIHByb3BlcnRpZXMuZm9udFdlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkUGlja2VyKCJmb250LXdlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2Vp
Z2h0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkJvbGRlciIsICJCb2xkIiwg
Ik5vcm1hbCIsICJMaWdodGVyIl0pKTsKKworICAgICAgICBmb250U2l6ZVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFNpemUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTaXpl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250V2VpZ2h0LmVsZW1lbnQpOwor
CisgICAgICAgIHZhciBmb250U3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiZm9udC1zdHlsZSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3R5bGUiKSwgWyJJdGFsaWMiLCAiTm9ybWFsIl0pOworICAgICAgICBwcm9wZXJ0
aWVzLmZvbnRWYXJpYW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRDaGVj
a2JveCgiZm9udC12YXJpYW50IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYXJpYW50IiksICJT
bWFsbCBDYXBzIiwgIkltYWdlcy9Gb250VmFyaWFudFNtYWxsQ2Fwcy5zdmciKQorCisgICAgICAg
IGZvbnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFN0eWxlLmVs
ZW1lbnQpOworICAgICAgICBmb250U3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmZvbnRWYXJpYW50LmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuZm9udEZhbWlseV07CisKKyAgICAgICAg
dmFyIGZvbnRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZm9u
dEZhbWlseVJvdywgZm9udFNpemVSb3csIGZvbnRTdHlsZVJvd10pOworICAgICAgICB0aGlzLl9w
b3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtmb250R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxh
dGVUZXh0U3BhY2luZ1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5f
Z3JvdXBzLnRleHRTcGFjaW5nOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3Bl
cnRpZXM7CisKKyAgICAgICAgdmFyIGRlZmF1bHRUZXh0S2V5d29yZHMgPSB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cy5jb25jYXQoWyJOb3JtYWwiXSk7CisKKyAgICAgICAgdmFyIHRleHRMYXlvdXRS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMubGluZUhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgibGluZS1oZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBkZWZh
dWx0VGV4dEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRp
ZXMudmVydGljYWxBbGlnbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgidmVydGljYWwtYWxpZ24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsaWduIiksIFsi
QmFzZWxpbmUiLCAiQm90dG9tIl0uY29uY2F0KHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBbIk1p
ZGRsZSIsICJTdWIiLCAiU3VwZXIiLCAiVGV4dCBCb3R0b20iLCAiVGV4dCBUb3AiLCAiVG9wIl0p
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgdGV4dExheW91dFJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubGluZUhlaWdodC5lbGVtZW50KTsKKyAgICAgICAgdGV4
dExheW91dFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudmVydGljYWxBbGlnbi5l
bGVtZW50KTsKKworICAgICAgICB2YXIgdGV4dFNwYWNpbmdSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubGV0dGVyU3BhY2luZyA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgibGV0dGVyLXNwYWNp
bmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxldHRlciIpLCBkZWZhdWx0VGV4dEtleXdvcmRz
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMud29yZFNwYWNpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIndvcmQtc3BhY2lu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV29yZCIpLCBkZWZhdWx0VGV4dEtleXdvcmRzLCB0
aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmxldHRlclNwYWNpbmcuZWxlbWVudCk7CisgICAgICAgIHRl
eHRTcGFjaW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53b3JkU3BhY2luZy5l
bGVtZW50KTsKKworICAgICAgICB2YXIgdGV4dFdoaXRlc3BhY2VSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudGV4dEluZGVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1pbmRlbnQi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluZGVudCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0
cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLndoaXRlU3BhY2Ug
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigid2hpdGUtc3BhY2Ui
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldoaXRlc3BhY2UiKSwgdGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMuY29uY2F0KFsiTm9ybWFsIiwgIk5vd3JhcCIsICJQcmUiLCAiUHJlIExpbmUiLCAiUHJl
IFdyYXAiXSkpOworCisgICAgICAgIHRleHRXaGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy50ZXh0SW5kZW50LmVsZW1lbnQpOworICAgICAgICB0ZXh0V2hpdGVzcGFj
ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMud2hpdGVTcGFjZS5lbGVtZW50KTsK
KworICAgICAgICB2YXIgdGV4dFNwYWNpbmdHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbdGV4dExheW91dFJvdywgdGV4dFNwYWNpbmdSb3csIHRleHRXaGl0ZXNw
YWNlUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3RleHRTcGFj
aW5nR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVUZXh0U2hhZG93U2VjdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMudGV4dFNoYWRvdzsKKyAgICAg
ICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciB0ZXh0
U2hhZG93U2l6aW5nID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICB2YXIgdGV4dFNoYWRvd0ggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIb3Jpem9udGFs
IiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICB2YXIg
dGV4dFNoYWRvd1YgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
InRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWZXJ0aWNhbCIpLCBudWxsLCB0
aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKworICAgICAgICB0ZXh0U2hhZG93U2l6
aW5nLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dFNoYWRvd0guZWxlbWVudCk7CisgICAgICAgIHRl
eHRTaGFkb3dTaXppbmcuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Vi5lbGVtZW50KTsK
KworICAgICAgICB2YXIgdGV4dFNoYWRvd1N0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICB2YXIgdGV4dFNoYWRvd0NvbG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHRleHRTaGFkb3dDb2xvci5jb2xvclByb3BlcnR5
ID0gdHJ1ZTsKKyAgICAgICAgdmFyIHRleHRTaGFkb3dCbHVyID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQmx1ciIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKyAg
ICAgICAgdGV4dFNoYWRvd0JsdXIub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAg
dGV4dFNoYWRvd1N0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dFNoYWRvd0NvbG9yLmVsZW1l
bnQpOworICAgICAgICB0ZXh0U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hh
ZG93Qmx1ci5lbGVtZW50KTsKKworICAgICAgICBwcm9wZXJ0aWVzLnRleHRTaGFkb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigidGV4dC1zaGFkb3ciLCBb
dGV4dFNoYWRvd0gsIHRleHRTaGFkb3dWLCB0ZXh0U2hhZG93Qmx1ciwgdGV4dFNoYWRvd0NvbG9y
XSk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBb
dGV4dFNoYWRvd0NvbG9yXTsKKworICAgICAgICB2YXIgdGV4dFNoYWRvd0dyb3VwID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0U2hhZG93U2l6aW5nLCB0ZXh0U2hh
ZG93U3R5bGVdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFNo
YWRvd0dyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQmFja2dyb3VuZFN0eWxlU2VjdGlv
bigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYmFja2dyb3VuZFN0
eWxlOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAg
ICAgdmFyIGJhY2tncm91bmRTdHlsZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJhY2tncm91bmQtY29sb3IiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRJ
bWFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVVUkxJbnB1dCgiYmFja2dyb3VuZC1p
bWFnZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW1hZ2UiKSk7CisKKyAgICAgICAgYmFja2dy
b3VuZFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kQ29s
b3IuZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZEltYWdlLmVsZW1lbnQpOworCisgICAgICAgIHZhciBi
YWNrZ3JvdW5kU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgdmFyIGJhY2tncm91bmRTaXplS2V5d29yZHMgPSB0aGlzLl9rZXl3b3Jkcy5ib3hN
b2RlbC5jb25jYXQoWyJDb250YWluIiwgIkNvdmVyIl0pOworICAgICAgICB2YXIgYmFja2dyb3Vu
ZFNpemVYID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNr
Z3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIGJhY2tncm91bmRT
aXplS2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgYmFja2dyb3VuZFNp
emVYLm1hc3RlclByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgdmFyIGJhY2tncm91bmRTaXplWSA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1z
aXplIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgYmFja2dyb3VuZFNpemVLZXl3
b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVkubWFz
dGVyUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigiYmFja2dyb3Vu
ZC1zaXplIiwgW2JhY2tncm91bmRTaXplWCwgYmFja2dyb3VuZFNpemVZXSk7CisKKyAgICAgICAg
YmFja2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kU2l6ZVguZWxl
bWVudCk7CisgICAgICAgIGJhY2tncm91bmRTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFj
a2dyb3VuZFNpemVZLmVsZW1lbnQpOworCisgICAgICAgIHZhciBiYWNrZ3JvdW5kUmVwZWF0Um93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLmJhY2tncm91bmRSZXBlYXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZFBpY2tlcigiYmFja2dyb3VuZC1yZXBlYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGVh
dCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJObyBSZXBlYXQiLCAiUmVwZWF0
IiwgIlJlcGVhdCBYIiwgIlJlcGVhdCBZIl0pKTsKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3Jv
dW5kQXR0YWNobWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2Vy
KCJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF0dGFjaCIp
LCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJGaXhlZCIsICJMb2NhbCIsICJTY3Jv
bGwiXSkpOworCisgICAgICAgIGJhY2tncm91bmRSZXBlYXRSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmJhY2tncm91bmRSZXBlYXQuZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91
bmRSZXBlYXRSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91bmRBdHRh
Y2htZW50LmVsZW1lbnQpOworCisgICAgICAgIHZhciBiYWNrZ3JvdW5kUG9zaXRpb25Sb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBiYWNrZ3Jv
dW5kUG9zaXRpb25YID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBY
IiksIFsiQ2VudGVyIiwgIkxlZnQiLCAiUmlnaHQiXSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOwor
ICAgICAgICB2YXIgYmFja2dyb3VuZFBvc2l0aW9uWSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1wb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUG9zaXRpb24gWSIpLCBbIkJvdHRvbSIsICJDZW50ZXIiLCAiVG9wIl0sIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRQb3NpdGlv
biA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJiYWNrZ3Jv
dW5kLXBvc2l0aW9uIiwgW2JhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmRQb3NpdGlvblld
KTsKKworICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChi
YWNrZ3JvdW5kUG9zaXRpb25YLmVsZW1lbnQpOworICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb25S
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kUG9zaXRpb25ZLmVsZW1lbnQpOworCisg
ICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRp
ZXMuYmFja2dyb3VuZENvbG9yXTsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFN0eWxlR3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JhY2tncm91bmRTdHlsZVJv
dywgYmFja2dyb3VuZFNpemVSb3csIGJhY2tncm91bmRSZXBlYXRSb3csIGJhY2tncm91bmRQb3Np
dGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtiYWNrZ3Jv
dW5kU3R5bGVHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUJvcmRlclNlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmJvcmRlcjsKKyAgICAgICAg
dmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBib3JkZXJB
bGxTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlclN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIoWyJib3JkZXItdG9wLXN0eWxlIiwgImJvcmRlci1yaWdodC1zdHlsZSIsICJib3Jk
ZXItYm90dG9tLXN0eWxlIiwgImJvcmRlci1sZWZ0LXN0eWxlIl0gLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJTdHlsZS5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLXN0eWxl
IjsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3Atd2lkdGgiLCAiYm9yZGVyLXJpZ2h0
LXdpZHRoIiwgImJvcmRlci1ib3R0b20td2lkdGgiLCAiYm9yZGVyLWxlZnQtd2lkdGgiXSwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLnBy
b3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItd2lkdGgiOworCisgICAgICAgIGJvcmRlckFs
bFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLmVsZW1lbnQp
OworICAgICAgICBib3JkZXJBbGxTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5i
b3JkZXJXaWR0aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyQWxsU3R5bGUgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyQ29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoWyJib3Jk
ZXItdG9wLWNvbG9yIiwgImJvcmRlci1yaWdodC1jb2xvciIsICJib3JkZXItYm90dG9tLWNvbG9y
IiwgImJvcmRlci1sZWZ0LWNvbG9yIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7
CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQ29sb3IucHJvcGVydHlSZWZlcmVuY2VOYW1lID0g
ImJvcmRlci1jb2xvciI7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmFkaXVzID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJh
ZGl1cyIsICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLWxlZnQtcmFk
aXVzIiwgImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmFkaXVzLnByb3BlcnR5UmVmZXJlbmNlTmFt
ZSA9ICJib3JkZXItcmFkaXVzIjsKKworICAgICAgICBib3JkZXJBbGxTdHlsZS5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQ29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRl
ckFsbFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSYWRpdXMuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlckFsbFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5i
b3JkZXJTdHlsZSwgcHJvcGVydGllcy5ib3JkZXJXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJDb2xv
ciwgcHJvcGVydGllcy5ib3JkZXJSYWRpdXNdOworICAgICAgICB2YXIgYm9yZGVyQWxsR3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlckFsbFNpemUsIGJv
cmRlckFsbFN0eWxlXSk7CisKKyAgICAgICAgdmFyIGJvcmRlclRvcFNpemUgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9w
U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVy
LXRvcC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29y
ZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRoID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3JkZXItdG9wLXdpZHRo
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJX
aWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclRvcFNpemUuZWxl
bWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLmVsZW1lbnQpOworICAg
ICAgICBib3JkZXJUb3BTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJU
b3BXaWR0aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyVG9wU3R5bGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVy
VG9wQ29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRl
ci10b3AtY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCAiYm9yZGVyLXRvcC1yaWdo
dC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJUb3BT
dHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wQ29sb3IuZWxlbWVu
dCk7CisgICAgICAgIGJvcmRlclRvcFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5ib3JkZXJUb3BSYWRpdXMuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlclRvcFByb3Bl
cnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJUb3BTdHlsZSwgcHJvcGVydGllcy5ib3JkZXJUb3BX
aWR0aCwgcHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJvcGVydGllcy5ib3JkZXJUb3BSYWRp
dXNdOworICAgICAgICB2YXIgYm9yZGVyVG9wR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW2JvcmRlclRvcFNpemUsIGJvcmRlclRvcFN0eWxlXSk7CisKKyAgICAg
ICAgdmFyIGJvcmRlclJpZ2h0U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSaWdodFN0eWxlID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJvcmRlci1yaWdodC1zdHlsZSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci1yaWdodC13aWR0aCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3Vu
aXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJSaWdodFNpemUuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRl
clJpZ2h0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0
aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyUmlnaHRTdHlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSaWdo
dENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXIt
cmlnaHQtY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRv
bS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5f
a2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3Jk
ZXJSaWdodFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdodENv
bG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJSaWdodFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2YXIg
Ym9yZGVyUmlnaHRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZSwgcHJv
cGVydGllcy5ib3JkZXJSaWdodFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3IsIHBy
b3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXNdOworICAgICAgICB2YXIgYm9yZGVyUmlnaHRHcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyUmlnaHRTaXpl
LCBib3JkZXJSaWdodFN0eWxlXSk7CisKKyAgICAgICAgdmFyIGJvcmRlckJvdHRvbVNpemUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyQm90dG9tU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBp
Y2tlcigiYm9yZGVyLWJvdHRvbS1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUi
KSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRl
ckJvdHRvbVdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJib3JkZXItYm90dG9tLXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0
aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAg
ICAgIGJvcmRlckJvdHRvbVNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
ckJvdHRvbVN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJCb3R0b21TaXplLmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21XaWR0aC5lbGVtZW50KTsKKworICAg
ICAgICB2YXIgYm9yZGVyQm90dG9tU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tQ29sb3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRlci1ib3R0b20tY29sb3IiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRl
ckJvdHRvbVJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJv
eChbImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRp
dXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJCb3R0b21TdHls
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQm90dG9tQ29sb3IuZWxlbWVu
dCk7CisgICAgICAgIGJvcmRlckJvdHRvbVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5ib3JkZXJCb3R0b21SYWRpdXMuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlckJv
dHRvbVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHlsZSwgcHJvcGVydGll
cy5ib3JkZXJCb3R0b21XaWR0aCwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciwgcHJvcGVy
dGllcy5ib3JkZXJCb3R0b21SYWRpdXNdOworICAgICAgICB2YXIgYm9yZGVyQm90dG9tR3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlckJvdHRvbVNpemUs
IGJvcmRlckJvdHRvbVN0eWxlXSk7CisKKyAgICAgICAgdmFyIGJvcmRlckxlZnRTaXplID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJv
cmRlckxlZnRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2Vy
KCJib3JkZXItbGVmdC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhp
cy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckxlZnRX
aWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVy
LWxlZnQtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdv
cmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVy
TGVmdFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRTdHlsZS5l
bGVtZW50KTsKKyAgICAgICAgYm9yZGVyTGVmdFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmJvcmRlckxlZnRXaWR0aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyTGVm
dFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlckxlZnRDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b2xvclBpY2tlcigiYm9yZGVyLWxlZnQtY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVz
IiwgImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
YWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBib3JkZXJMZWZ0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LmJvcmRlckxlZnRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyTGVmdFN0eWxlLmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJMZWZ0UmFkaXVzLmVsZW1lbnQpOworCisg
ICAgICAgIHZhciBib3JkZXJMZWZ0UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckxlZnRT
dHlsZSwgcHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyTGVmdENv
bG9yLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXNdOworICAgICAgICB2YXIgYm9yZGVyTGVm
dEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJMZWZ0
U2l6ZSwgYm9yZGVyTGVmdFN0eWxlXSk7CisKKyAgICAgICAgdmFyIGJvcmRlclRhYkNvbnRyb2xs
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xs
ZXIoeworICAgICAgICAgICAgImFsbCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
bGwiKSwgZWxlbWVudDogYm9yZGVyQWxsR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVy
QWxsUHJvcGVydGllc30sCisgICAgICAgICAgICAidG9wIjoge3RpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRvcCIpLCBlbGVtZW50OiBib3JkZXJUb3BHcm91cC5lbGVtZW50LCBwcm9wZXJ0
aWVzOiBib3JkZXJUb3BQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJyaWdodCI6IHt0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSaWdodCIpLCBlbGVtZW50OiBib3JkZXJSaWdodEdyb3Vw
LmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlclJpZ2h0UHJvcGVydGllc30sCisgICAgICAgICAg
ICAiYm90dG9tIjoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvdHRvbSIpLCBlbGVt
ZW50OiBib3JkZXJCb3R0b21Hcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJCb3R0b21Q
cm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJsZWZ0Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkxlZnQiKSwgZWxlbWVudDogYm9yZGVyTGVmdEdyb3VwLmVsZW1lbnQsIHByb3BlcnRp
ZXM6IGJvcmRlckxlZnRQcm9wZXJ0aWVzfQorICAgICAgICB9KTsKKworICAgICAgICB2YXIgaGln
aGxpZ2h0Q29uZmlnID0ge2JvcmRlckNvbG9yOiB7cjogMjU1LCBnOiAyMjksIGI6IDE1MywgYTog
MC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlz
dGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJv
cmRlclRvcFdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNz
TW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJCb3R0b21XaWR0aCwgaGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3Vw
LnByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0
aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJSaWdo
dFdpZHRoLCBoaWdobGlnaHRDb25maWcpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyQ29sb3IsIHByb3BlcnRpZXMu
Ym9yZGVyVG9wQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tQ29sb3IsIHByb3BlcnRpZXMu
Ym9yZGVyTGVmdENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3JdOworCisgICAgICAg
IHZhciBib3JkZXJHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChb
Ym9yZGVyVGFiQ29udHJvbGxlciwgYm9yZGVyQWxsR3JvdXAsIGJvcmRlclRvcEdyb3VwLCBib3Jk
ZXJSaWdodEdyb3VwLCBib3JkZXJCb3R0b21Hcm91cCwgYm9yZGVyTGVmdEdyb3VwXSk7CisgICAg
ICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JvcmRlckdyb3VwXSk7CisgICAgfQor
CisgICAgX3BvcHVsYXRlT3V0bGluZVNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3Vw
ID0gdGhpcy5fZ3JvdXBzLm91dGxpbmU7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAu
cHJvcGVydGllczsKKworICAgICAgICB2YXIgb3V0bGluZVNpemVSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZVdpZHRo
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvdXRsaW5lLXdp
ZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3Jk
ZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLm91dGxp
bmVPZmZzZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIm91
dGxpbmUtb2Zmc2V0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPZmZzZXQiKSwgdGhpcy5fa2V5
d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsKKworICAgICAgICBv
dXRsaW5lU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZVdpZHRo
LmVsZW1lbnQpOworICAgICAgICBvdXRsaW5lU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMub3V0bGluZU9mZnNldC5lbGVtZW50KTsKKworICAgICAgICB2YXIgb3V0bGluZVN0
eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLm91dGxpbmVTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyKCJvdXRsaW5lLXN0eWxlIiAsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUi
KSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLm91dGxp
bmVDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigib3V0bGlu
ZS1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisKKyAgICAgICAgb3V0
bGluZVN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lU3R5bGUu
ZWxlbWVudCk7CisgICAgICAgIG91dGxpbmVTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMub3V0bGluZUNvbG9yLmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21w
bGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMub3V0bGluZUNvbG9yXTsKKwor
ICAgICAgICB2YXIgb3V0bGluZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtvdXRsaW5lU2l6ZVJvdywgb3V0bGluZVN0eWxlUm93XSk7CisgICAgICAgIHRoaXMu
X3BvcHVsYXRlU2VjdGlvbihncm91cCwgW291dGxpbmVHcm91cF0pOworICAgIH0KKworICAgIF9w
b3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhp
cy5fZ3JvdXBzLmJveFNoYWRvdzsKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9w
ZXJ0aWVzOworCisgICAgICAgIHZhciBib3hTaGFkb3dSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93ID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcigiYm94LXNo
YWRvdyIpOworICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5lbGVtZW50LnN0eWxlLm1hcmdp
bkxlZnQgPSAiMTFweCI7CisKKyAgICAgICAgYm94U2hhZG93Um93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5ib3hTaGFkb3cuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRv
d0hSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZh
ciBib3hTaGFkb3dIID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVy
U2xpZGVyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0IiksIG51bGws
IHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQsIHRydWUpOworCisgICAgICAgIGJveFNo
YWRvd0hSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dILmVsZW1lbnQpOworCisgICAg
ICAgIHZhciBib3hTaGFkb3dWUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICB2YXIgYm94U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVG9wIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQsIHRydWUpOwor
CisgICAgICAgIGJveFNoYWRvd1ZSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dWLmVs
ZW1lbnQpOworCisgICAgICAgIHZhciBib3hTaGFkb3dCbHVyUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgYm94U2hhZG93Qmx1ciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm94LXNoYWRvdyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQmx1ciIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQ
ZXJjZW50KTsKKyAgICAgICAgYm94U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsK
KyAgICAgICAgdmFyIGJveFNoYWRvd1NwcmVhZCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveCgiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3By
ZWFkIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQsIHRydWUpOworICAg
ICAgICBib3hTaGFkb3dTcHJlYWQub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAg
Ym94U2hhZG93Qmx1clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0JsdXIuZWxlbWVu
dCk7CisgICAgICAgIGJveFNoYWRvd0JsdXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFk
b3dTcHJlYWQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd0NvbG9yUm93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgYm94U2hhZG93
Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJveC1zaGFk
b3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBib3hTaGFkb3dD
b2xvci5jb2xvclByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgdmFyIGJveFNoYWRvd0luc2V0ID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRDaGVja2JveCgiYm94LXNoYWRvdyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5zZXQiKSwgIkluc2V0Iik7CisgICAgICAgIGJveFNo
YWRvd0luc2V0Lm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIGJveFNoYWRvd0Nv
bG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Q29sb3IuZWxlbWVudCk7CisgICAg
ICAgIGJveFNoYWRvd0NvbG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93SW5zZXQu
ZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigiYm94LXNoYWRvdyIsIFti
b3hTaGFkb3dILCBib3hTaGFkb3dWLCBib3hTaGFkb3dCbHVyLCBib3hTaGFkb3dTcHJlYWQsIGJv
eFNoYWRvd0NvbG9yLCBib3hTaGFkb3dJbnNldF0pOworCisgICAgICAgIGZ1bmN0aW9uIG5vUmVt
YWluaW5nVHJlZUl0ZW1zKCkKKyAgICAgICAgeworICAgICAgICAgICAgYm94U2hhZG93UHJvcGVy
dHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICBib3hTaGFk
b3dILmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1YuZGlzYWJsZWQgPSB0
cnVlOworICAgICAgICAgICAgYm94U2hhZG93Qmx1ci5kaXNhYmxlZCA9IHRydWU7CisgICAgICAg
ICAgICBib3hTaGFkb3dTcHJlYWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hh
ZG93Q29sb3IuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93SW5zZXQuZGlz
YWJsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3
b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1RyZWVJdGVt
cywgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWRCb3hTaGFkb3dJdGVtVmFsdWVD
aGFuZ2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuc2Vs
ZWN0ZWRUcmVlRWxlbWVudFZhbHVlID0gYm94U2hhZG93UHJvcGVydHlDb21iaW5lci5zeW50aGVz
aXplZFZhbHVlOworICAgICAgICB9CisgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5F
dmVudC5WYWx1ZURpZENoYW5nZSwgc2VsZWN0ZWRCb3hTaGFkb3dJdGVtVmFsdWVDaGFuZ2VkLCB0
aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBib3hTaGFkb3dJdGVtU2VsZWN0ZWQoZXZlbnQpIHsK
KyAgICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRl
eHQoZXZlbnQuZGF0YS50ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVz
LmJveFNoYWRvdy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1h
U2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCBib3hTaGFkb3dJ
dGVtU2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGli
bGVQcm9wZXJ0aWVzID0gW2JveFNoYWRvd0NvbG9yXTsKKworICAgICAgICB2YXIgYm94U2hhZG93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3hTaGFkb3dSb3csIGJv
eFNoYWRvd0hSb3csIGJveFNoYWRvd1ZSb3csIGJveFNoYWRvd0JsdXJSb3csIGJveFNoYWRvd0Nv
bG9yUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JveFNoYWRv
d10pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy50cmFuc2l0aW9uOworICAgICAgICB2YXIg
cHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25S
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMudHJhbnNpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFy
YXRlZEtleXdvcmRFZGl0b3IoInRyYW5zaXRpb24iKTsKKyAgICAgICAgcHJvcGVydGllcy50cmFu
c2l0aW9uLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICB0cmFu
c2l0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50cmFuc2l0aW9uLmVsZW1l
bnQpOworCisgICAgICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHlSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQoInRyYW5zaXRp
b24tcHJvcGVydHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb3BlcnR5IikpOworICAgICAg
ICB2YXIgdHJhbnNpdGlvblRpbWluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyKCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiVGltaW5nIiksIFsiTGluZWFyIiwgIkVhc2UiLCAiRWFzZSBJbiIsICJFYXNlIE91dCIs
ICJFYXNlIEluIE91dCJdKTsKKworICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uUHJvcGVydHkuZWxlbWVudCk7CisgICAgICAgIHRyYW5z
aXRpb25Qcm9wZXJ0eVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25UaW1pbmcuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvblJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25UaW1lS2V5
d29yZHMgPSBbInMiLCAibXMiXTsKKyAgICAgICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kdXJh
dGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKSwgbnVsbCwgdHJhbnNpdGlv
blRpbWVLZXl3b3Jkcyk7CisgICAgICAgIHZhciB0cmFuc2l0aW9uRGVsYXkgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRyYW5zaXRpb24tZGVsYXkiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRlbGF5IiksIG51bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMp
OworICAgICAgICB0cmFuc2l0aW9uRGVsYXkub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAg
ICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlv
bkR1cmF0aW9uLmVsZW1lbnQpOworICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uRGVsYXkuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRy
YW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIoInRyYW5zaXRpb24iLCBbdHJhbnNpdGlvblByb3BlcnR5LCB0cmFuc2l0
aW9uVGltaW5nLCB0cmFuc2l0aW9uRHVyYXRpb24sIHRyYW5zaXRpb25EZWxheV0pOworCisgICAg
ICAgIGZ1bmN0aW9uIG5vUmVtYWluaW5nVHJlZUl0ZW1zKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQoIiIpOwor
ICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHRyYW5zaXRpb25UaW1pbmcuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNp
dGlvbkR1cmF0aW9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25EZWxh
eS5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0
aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1Ry
ZWVJdGVtcywgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWR0cmFuc2l0aW9uSXRl
bVZhbHVlQ2hhbmdlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudHJhbnNp
dGlvbi5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5l
ci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICB9CisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0
eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHNlbGVjdGVkdHJhbnNpdGlvbkl0ZW1WYWx1
ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25JdGVtU2VsZWN0
ZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLnVwZGF0
ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4dCB8fCAiIik7CisgICAgICAgIH0KKyAgICAg
ICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVtU2VsZWN0
ZWQsIHRyYW5zaXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdyb3VwLmF1dG9j
b21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3RyYW5zaXRpb25Qcm9wZXJ0eV07CisKKyAg
ICAgICAgdmFyIHRyYW5zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Hcm91cChbdHJhbnNpdGlvblJvdywgdHJhbnNpdGlvblByb3BlcnR5Um93LCB0cmFuc2l0aW9u
RHVyYXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdHJh
bnNpdGlvbkdyb3VwXSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWQgPSBTeW1ib2woInZpc3VhbC1zdHlsZS1zdHlsZS1kaXNh
YmxlZCIpOworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9w
ZXJ0eVNlY3Rpb25UZXh0TGlzdCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLWluaXRpYWwtcHJvcGVy
dHktc2VjdGlvbi10ZXh0Iik7CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5wcm9wZXJ0eVJlZmVyZW5jZUluZm8gPSB7CisgICAgImJhY2tncm91bmQtYXR0YWNobWVudCI6
ICJJZiBhIGJhY2tncm91bmQtaW1hZ2UgaXMgc3BlY2lmaWVkLCB0aGUgYmFja2dyb3VuZC1hdHRh
Y2htZW50IENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhhdCBpbWFnZSdzIHBvc2l0
aW9uIGlzIGZpeGVkIHdpdGhpbiB0aGUgdmlld3BvcnQsIG9yIHNjcm9sbHMgYWxvbmcgd2l0aCBp
dHMgY29udGFpbmluZyBibG9jay4iLAorICAgICJiYWNrZ3JvdW5kLWNvbG9yIjogIlRoZSBiYWNr
Z3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFu
IGVsZW1lbnQsIGVpdGhlciB0aHJvdWdoIGEgY29sb3IgdmFsdWUgb3IgdGhlIGtleXdvcmQgdHJh
bnNwYXJlbnQuIiwKKyAgICAiYmFja2dyb3VuZC1pbWFnZSI6ICJUaGUgQ1NTIGJhY2tncm91bmQt
aW1hZ2UgcHJvcGVydHkgc2V0cyBvbmUgb3Igc2V2ZXJhbCBiYWNrZ3JvdW5kIGltYWdlcyBmb3Ig
YW4gZWxlbWVudC4gVGhlIGltYWdlcyBhcmUgZHJhd24gb24gc3RhY2tpbmcgY29udGV4dCBsYXll
cnMgb24gdG9wIG9mIGVhY2ggb3RoZXIuIFRoZSBmaXJzdCBsYXllciBzcGVjaWZpZWQgaXMgZHJh
d24gYXMgaWYgaXQgaXMgY2xvc2VzdCB0byB0aGUgdXNlci4iLAorICAgICJiYWNrZ3JvdW5kLXBv
c2l0aW9uIjogIlRoZSBiYWNrZ3JvdW5kLXBvc2l0aW9uIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBp
bml0aWFsIHBvc2l0aW9uLCByZWxhdGl2ZSB0byB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbiBsYXll
ciBkZWZpbmVkIGJ5IGJhY2tncm91bmQtb3JpZ2luIGZvciBlYWNoIGRlZmluZWQgYmFja2dyb3Vu
ZCBpbWFnZS4iLAorICAgICJiYWNrZ3JvdW5kLXJlcGVhdCI6ICJUaGUgYmFja2dyb3VuZC1yZXBl
YXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IGJhY2tncm91bmQgaW1hZ2VzIGFyZSByZXBlYXRl
ZC4gQSBiYWNrZ3JvdW5kIGltYWdlIGNhbiBiZSByZXBlYXRlZCBhbG9uZyB0aGUgaG9yaXpvbnRh
bCBheGlzLCB0aGUgdmVydGljYWwgYXhpcywgYm90aCBheGVzLCBvciBub3QgcmVwZWF0ZWQgYXQg
YWxsLiIsCisgICAgImJhY2tncm91bmQtc2l6ZSI6ICJUaGUgYmFja2dyb3VuZC1zaXplIENTUyBw
cm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJhY2tncm91bmQgaW1hZ2VzLiBUaGUg
c2l6ZSBvZiB0aGUgaW1hZ2UgY2FuIGJlIGZ1bGx5IGNvbnN0cmFpbmVkIG9yIG9ubHkgcGFydGlh
bGx5IGluIG9yZGVyIHRvIHByZXNlcnZlIGl0cyBpbnRyaW5zaWMgcmF0aW8uIiwKKyAgICAiYm9y
ZGVyLWJvdHRvbS1jb2xvciI6ICJUaGUgYm9yZGVyLWJvdHRvbS1jb2xvciBDU1MgcHJvcGVydHkg
c2V0cyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYW4gZWxlbWVudC4gTm90ZSB0
aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBDU1MgcHJvcGVydGllcyBib3JkZXItY29s
b3Igb3IgYm9yZGVyLWJvdHRvbSBhcmUgbW9yZSBjb252ZW5pZW50IGFuZCBwcmVmZXJhYmxlLiIs
CisgICAgImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiOiAiVGhlIGJvcmRlci1ib3R0b20tbGVm
dC1yYWRpdXMgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5kaW5nIG9mIHRoZSBib3R0b20tbGVm
dCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQuIFRoZSByb3VuZGluZyBjYW4gYmUgYSBjaXJjbGUgb3Ig
YW4gZWxsaXBzZSwgb3IgaWYgb25lIG9mIHRoZSB2YWx1ZSBpcyAwIG5vIHJvdW5kaW5nIGlzIGRv
bmUgYW5kIHRoZSBjb3JuZXIgaXMgc3F1YXJlLiIsCisgICAgImJvcmRlci1ib3R0b20tc3R5bGUi
OiAiVGhlIGJvcmRlci1ib3R0b20tc3R5bGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGxpbmUgc3R5
bGUgb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLWJvdHRvbS13
aWR0aCI6ICJUaGUgYm9yZGVyLWJvdHRvbS13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lk
dGggb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLWNvbG9yIjog
IlRoZSBib3JkZXItY29sb3IgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBzZXR0aW5n
IHRoZSBjb2xvciBvZiB0aGUgZm91ciBzaWRlcyBvZiBhbiBlbGVtZW50J3MgYm9yZGVyOiBib3Jk
ZXItdG9wLWNvbG9yLCBib3JkZXItcmlnaHQtY29sb3IsIGJvcmRlci1ib3R0b20tY29sb3IsIGJv
cmRlci1sZWZ0LWNvbG9yIiwKKyAgICAiYm9yZGVyLWxlZnQtY29sb3IiOiAiVGhlIGJvcmRlci1s
ZWZ0LWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGJvcmRl
ciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENT
UyBwcm9wZXJ0aWVzwqBib3JkZXItY29sb3Igb3IgYm9yZGVyLWxlZnQgYXJlIG1vcmUgY29udmVu
aWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItbGVmdC1zdHlsZSI6ICJUaGUgYm9y
ZGVyLWxlZnQtc3R5bGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIGxl
ZnQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1sZWZ0LXdpZHRoIjogIlRoZSBib3Jk
ZXItbGVmdC13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGxlZnQgYm9y
ZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1yYWRpdXMiOiAiVGhlIGJvcmRlci1yYWRpdXMg
Q1NTIHByb3BlcnR5IGFsbG93cyBXZWIgYXV0aG9ycyB0byBkZWZpbmUgaG93IHJvdW5kZWQgYm9y
ZGVyIGNvcm5lcnMgYXJlLiBUaGUgY3VydmUgb2YgZWFjaCBjb3JuZXIgaXMgZGVmaW5lZCB1c2lu
ZyBvbmUgb3IgdHdvIHJhZGlpLCBkZWZpbmluZyBpdHMgc2hhcGU6IGNpcmNsZSBvciBlbGxpcHNl
LiIsCisgICAgImJvcmRlci1yaWdodC1jb2xvciI6ICJUaGUgYm9yZGVyLXJpZ2h0LWNvbG9yIENT
UyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGFuIGVsZW1l
bnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXPC
oCBib3JkZXItY29sb3Igb3IgYm9yZGVyLXJpZ2h0IGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHBy
ZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLXJpZ2h0LXN0eWxlIjogIlRoZSBib3JkZXItcmlnaHQt
c3R5bGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIHJpZ2h0IGJvcmRl
ciBvZiBhIGJveC4iLAorICAgICJib3JkZXItcmlnaHQtd2lkdGgiOiAiVGhlIGJvcmRlci1yaWdo
dC13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIHJpZ2h0IGJvcmRlciBv
ZiBhIGJveC4iLAorICAgICJib3JkZXItc3R5bGUiOiAiVGhlIGJvcmRlci1zdHlsZSBwcm9wZXJ0
eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgbGluZSBzdHlsZSBmb3Ig
YWxsIGZvdXIgc2lkZXMgb2YgdGhlIGVsZW1lbnRzIGJvcmRlci4iLAorICAgICJib3JkZXItdG9w
LWNvbG9yIjogIlRoZSBib3JkZXItdG9wLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xv
ciBvZiB0aGUgdG9wIGJvcmRlciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBjYXNl
cyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzIGJvcmRlci1jb2xvciBvciBib3JkZXItdG9w
IGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLXRvcC1s
ZWZ0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyBDU1MgcHJvcGVydHkgc2V0
cyB0aGUgcm91bmRpbmcgb2YgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudC4gVGhl
IHJvdW5kaW5nIGNhbiBiZSBhIGNpcmNsZSBvciBhbiBlbGxpcHNlLCBvciBpZiBvbmUgb2YgdGhl
IHZhbHVlIGlzIDAsbm8gcm91bmRpbmcgaXMgZG9uZSBhbmQgdGhlIGNvcm5lciBpcyBzcXVhcmUu
IiwKKyAgICAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiAiVGhlIGJvcmRlci10b3AtcmlnaHQt
cmFkaXVzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSByb3VuZGluZyBvZiB0aGUgdG9wLXJpZ2h0IGNv
cm5lciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNhbiBiZSBhIGNpcmNsZSBvciBhbiBl
bGxpcHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAgbm8gcm91bmRpbmcgaXMgZG9uZSBh
bmQgdGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9yZGVyLXRvcC1zdHlsZSI6ICJUaGUg
Ym9yZGVyLXRvcC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUg
dG9wIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItdG9wLXdpZHRoIjogIlRoZSBib3Jk
ZXItdG9wLXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgdG9wIGJvcmRl
ciBvZiBhIGJveC4iLAorICAgICJib3JkZXItd2lkdGgiOiAiVGhlIGJvcmRlci13aWR0aCBwcm9w
ZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIG9mIGEgYm94LiBVc2luZyB0aGUgc2hv
cnRoYW5kIHByb3BlcnR5IGJvcmRlciBpcyBvZnRlbiBtb3JlIGNvbnZlbmllbnQuIiwKKyAgICAi
Ym90dG9tIjogIlRoZSBib3R0b20gQ1NTIHByb3BlcnR5IHBhcnRpY2lwYXRlcyBpbiBzcGVjaWZ5
aW5nIHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiIsCisgICAgImJveC1zaGFk
b3ciOiAiVGhlIGJveC1zaGFkb3cgcHJvcGVydHkgZGVzY3JpYmVzIG9uZSBvciBtb3JlIHNoYWRv
dyBlZmZlY3RzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuIEl0IGVuYWJsZXMgeW91IHRvIGNh
c3QgYSBkcm9wIHNoYWRvdyBmcm9tIHRoZSBmcmFtZSBvZiBhbG1vc3QgYW55IGVsZW1lbnQuIElm
IGEgYm9yZGVyLXJhZGl1cyBpcyBzcGVjaWZpZWQgb24gdGhlIGVsZW1lbnQgd2l0aCBhIGJveCBz
aGFkb3csIHRoZSBib3ggc2hhZG93IHRha2VzIG9uIHRoZSBzYW1lIHJvdW5kZWQgY29ybmVycy4g
VGhlIHotb3JkZXJpbmcgb2YgbXVsdGlwbGUgYm94IHNoYWRvd3MgaXMgdGhlIHNhbWUgYXMgbXVs
dGlwbGUgdGV4dCBzaGFkb3dzICh0aGUgZmlyc3Qgc3BlY2lmaWVkIHNoYWRvdyBpcyBvbiB0b3Ap
LiIsCisgICAgImJveC1zaXppbmciOiAiVGhlIGJveC1zaXppbmcgcHJvcGVydHkgaXMgdXNlZCB0
byBhbHRlciB0aGUgZGVmYXVsdCBDU1MgYm94IG1vZGVsIHVzZWQgdG8gY2FsY3VsYXRlIHdpZHRo
cyBhbmQgaGVpZ2h0cyBvZiBlbGVtZW50cy4gSXQgaXMgcG9zc2libGUgdG8gdXNlIHRoaXMgcHJv
cGVydHkgdG8gZW11bGF0ZSB0aGUgYmVoYXZpb3Igb2YgYnJvd3NlcnMgdGhhdCBkbyBub3QgY29y
cmVjdGx5IHN1cHBvcnQgdGhlIENTUyBib3ggbW9kZWwgc3BlY2lmaWNhdGlvbi4iLAorICAgICJj
bGVhciI6ICJUaGUgY2xlYXIgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuIGVsZW1l
bnQgY2FuIGJlIG5leHQgdG8gZmxvYXRpbmcgZWxlbWVudHMgdGhhdCBwcmVjZWRlIGl0IG9yIG11
c3QgYmUgbW92ZWQgZG93biAoY2xlYXJlZCkgYmVsb3cgdGhlbS4gVGhlIGNsZWFyIHByb3BlcnR5
IGFwcGxpZXMgdG8gYm90aCBmbG9hdGluZyBhbmQgbm9uLWZsb2F0aW5nIGVsZW1lbnRzLiIsCisg
ICAgImNvbG9yIjogIlRoZSBjb2xvciBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9y
IG9mIGFuIGVsZW1lbnQncyB0ZXh0IGNvbnRlbnQsIGFuZCBpdHMgZGVjb3JhdGlvbnMuIEl0IGRv
ZXNuJ3QgYWZmZWN0IGFueSBvdGhlciBjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgZWxlbWVudDsgaXQg
c2hvdWxkIHJlYWxseSBiZSBjYWxsZWQgdGV4dC1jb2xvciBhbmQgd291bGQgaGF2ZSBiZWVuIG5h
bWVkIHNvLCBzYXZlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMgYW5kIGl0cyBhcHBlYXJhbmNlIGlu
IENTUyBMZXZlbCAxLiIsCisgICAgImN1cnNvciI6ICJUaGUgY3Vyc29yIENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgdGhlIG1vdXNlIGN1cnNvciBkaXNwbGF5ZWQgd2hlbiB0aGUgbW91c2UgcG9pbnRl
ciBpcyBvdmVyIGFuIGVsZW1lbnQuIiwKKyAgICAiZGlyZWN0aW9uIjogIlNldCB0aGUgZGlyZWN0
aW9uIENTUyBwcm9wZXJ0eSB0byBtYXRjaCB0aGUgZGlyZWN0aW9uIG9mIHRoZSB0ZXh0OiBydGwg
Zm9yIGxhbmd1YWdlcyB3cml0dGVuIGZyb20gcmlnaHQtdG8tbGVmdCAobGlrZSBIZWJyZXcgb3Ig
QXJhYmljKSB0ZXh0IGFuZCBsdHIgZm9yIG90aGVyIHNjcmlwdHMuIFRoaXMgaXMgdHlwaWNhbGx5
IGRvbmUgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgKGUuZy4sIHVzaW5nIHRoZSBkaXIgYXR0cmli
dXRlIGluIEhUTUwpIHJhdGhlciB0aGFuIHRocm91Z2ggZGlyZWN0IHVzZSBvZiBDU1MuIiwKKyAg
ICAiZGlzcGxheSI6ICJUaGUgZGlzcGxheSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB0eXBl
IG9mIHJlbmRlcmluZyBib3ggdXNlZCBmb3IgYW4gZWxlbWVudC4gSW4gSFRNTCwgZGVmYXVsdCBk
aXNwbGF5IHByb3BlcnR5IHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBiZWhhdmlvcnMgZGVzY3JpYmVk
IGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb25zIG9yIGZyb20gdGhlIGJyb3dzZXIvdXNlciBkZWZh
dWx0IHN0eWxlc2hlZXQuIFRoZSBkZWZhdWx0IHZhbHVlIGluIFhNTCBpcyBpbmxpbmUuIiwKKyAg
ICAiZmxleC1iYXNpcyI6ICJUaGUgZmxleC1iYXNpcyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRo
ZSBmbGV4IGJhc2lzIHdoaWNoIGlzIHRoZSBpbml0aWFsIG1haW4gc2l6ZSBvZiBhIGZsZXggaXRl
bS4gVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBjb250ZW50LWJveCB1
bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZSB1c2luZyBib3gtc2l6aW5nLiIsCisgICAgImZsZXgt
ZGlyZWN0aW9uIjogIlRoZSBmbGV4LWRpcmVjdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhv
dyBmbGV4IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXggY29udGFpbmVyIGRlZmluaW5nIHRo
ZSBtYWluIGF4aXMgYW5kIHRoZSBkaXJlY3Rpb24gKG5vcm1hbCBvciByZXZlcnNlZCkuIiwKKyAg
ICAiZmxleC1ncm93IjogIlRoZSBmbGV4LWdyb3cgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUg
ZmxleCBncm93IGZhY3RvciBvZiBhIGZsZXggaXRlbS4gSXQgc3BlY2lmaWVzIHdoYXQgYW1vdW50
IG9mIHNwYWNlIGluc2lkZSB0aGUgZmxleCBjb250YWluZXIgdGhlIGl0ZW0gc2hvdWxkIHRha2Ug
dXAuIiwKKyAgICAiZmxleC1zaHJpbmsiOiAiVGhlIGZsZXgtc2hyaW5rIENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgdGhlIGZsZXggc2hyaW5rIGZhY3RvciBvZiBhIGZsZXggaXRlbS4iLAorICAgICJm
bGV4LXdyYXAiOiAiVGhlIENTUyBmbGV4LXdyYXAgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIg
ZmxleCBpdGVtcyBhcmUgZm9yY2VkIGludG8gYSBzaW5nbGUgbGluZSBvciBjYW4gYmUgd3JhcHBl
ZCBvbnRvIG11bHRpcGxlIGxpbmVzLiBJZiB3cmFwcGluZyBpcyBhbGxvd2VkLCB0aGlzIHByb3Bl
cnR5IGFsc28gZW5hYmxlcyB5b3UgdG8gY29udHJvbCB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIGxp
bmVzIGFyZSBzdGFja2VkLiIsCisgICAgImZsb2F0IjogIlRoZSBmbG9hdCBDU1MgcHJvcGVydHkg
c3BlY2lmaWVzIHRoYXQgYW4gZWxlbWVudCBzaG91bGQgYmUgdGFrZW4gZnJvbSB0aGUgbm9ybWFs
IGZsb3cgYW5kIHBsYWNlZCBhbG9uZyB0aGUgbGVmdCBvciByaWdodCBzaWRlIG9mIGl0cyBjb250
YWluZXIsIHdoZXJlIHRleHQgYW5kIGlubGluZSBlbGVtZW50cyB3aWxsIHdyYXAgYXJvdW5kIGl0
LiIsCisgICAgImZvbnQtZmFtaWx5IjogIlRoZSBmb250LWZhbWlseSBDU1MgcHJvcGVydHkgbGV0
cyB5b3Ugc3BlY2lmeSBhIHByaW9yaXRpemVkIGxpc3Qgb2YgZm9udCBmYW1pbHkgbmFtZXMgYW5k
L29yIGdlbmVyaWMgZmFtaWx5IG5hbWVzIGZvciB0aGUgc2VsZWN0ZWQgZWxlbWVudC4gVmFsdWVz
IGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSB0byBpbmRpY2F0ZSB0aGF0IHRoZXkgYXJlIGFsdGVy
bmF0aXZlcy4gVGhlIGJyb3dzZXIgd2lsbCBzZWxlY3QgdGhlIGZpcnN0IGZvbnQgb24gdGhlIGxp
c3QgdGhhdCBpcyBpbnN0YWxsZWQgb24gdGhlIGNvbXB1dGVyIG9yIHRoYXQgY2FuIGJlIGRvd25s
b2FkZWQgdXNpbmcgYSBAZm9udC1mYWNlIGF0LXJ1bGUuIiwKKyAgICAiZm9udC1zaXplIjogIlRo
ZSBmb250LXNpemUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgZm9udC4g
U2V0dGluZyB0aGUgZm9udCBzaXplIG1heSwgaW4gdHVybiwgY2hhbmdlIHRoZSBzaXplIG9mIG90
aGVyIGl0ZW1zLCBzaW5jZSBpdCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9mIHRoZSBl
bSBhbmQgZXjCoFxuIDxsZW5ndGg+IHVuaXRzLiIsCisgICAgImZvbnQtc3R5bGUiOiAiVGhlIGZv
bnQtc3R5bGUgQ1NTIHByb3BlcnR5IGxldHMgeW91IHNlbGVjdCBpdGFsaWMgb3Igb2JsaXF1ZSBm
YWNlcyB3aXRoaW4gYSBmb250LWZhbWlseS4iLAorICAgICJmb250LXZhcmlhbnQiOiAiVGhpcyBw
cm9wZXJ0eSBhY3RzIGFzIGEgc2hvcnRoYW5kIGZvciB0aGUgbG9uZ2hhbmQgcHJvcGVydGllczog
Zm9udC12YXJpYW50LWNhcHMsIGZvbnQtdmFyaWFudC1udW1lcmljLCBmb250LXZhcmlhbnQtYWx0
ZXJuYXRlcywgZm9udC12YXJpYW50LWxpZ2F0dXJlcywgYW5kIGZvbnQtdmFyaWFudC1lYXN0LWFz
aWFuLiBZb3UgY2FuIGFsc28gc2V0IHRoZSBDU1MgTGV2ZWwgMiAoUmV2aXNpb24gMSkgdmFsdWVz
IG9mIGZvbnQtdmFyaWFudCwgKHRoYXQgaXMsIG5vcm1hbCBvciBzbWFsbC1jYXBzKSwgYnkgdXNp
bmcgdGhlIGZvbnQgc2hvcnRoYW5kLiIsCisgICAgImZvbnQtd2VpZ2h0IjogIlRoZSBmb250LXdl
aWdodCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB3ZWlnaHQgb3IgYm9sZG5lc3Mgb2YgdGhl
IGZvbnQuIFNvbWUgZm9udHMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIG5vcm1hbCBhbmQgYm9sZC4i
LAorICAgICJoZWlnaHQiOiAiVGhlIGhlaWdodCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBo
ZWlnaHQgb2YgdGhlIGNvbnRlbnQgYXJlYSBvZiBhbiBlbGVtZW50LiBUaGUgY29udGVudCBhcmVh
IGlzIGluc2lkZSB0aGUgcGFkZGluZywgYm9yZGVyLCBhbmQgbWFyZ2luIG9mIHRoZSBlbGVtZW50
LiIsCisgICAgImxlZnQiOiAiVGhlIGxlZnQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBwYXJ0IG9m
IHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiIsCisgICAgImxldHRlci1zcGFj
aW5nIjogIlRoZSBsZXR0ZXItc3BhY2luZyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHNwYWNpbmcg
YmVoYXZpb3IgYmV0d2VlbiB0ZXh0IGNoYXJhY3RlcnMuIiwKKyAgICAibGluZS1oZWlnaHQiOiAi
T24gYmxvY2sgbGV2ZWwgZWxlbWVudHMsIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eSBzcGVjaWZp
ZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGxpbmUgYm94ZXMgd2l0aGluIHRoZSBlbGVtZW50LiIs
CisgICAgIm1hcmdpbi1ib3R0b20iOiAiVGhlIG1hcmdpbi1ib3R0b20gQ1NTIHByb3BlcnR5IG9m
IGFuIGVsZW1lbnQgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSBib3R0b20g
b2YgYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAi
bWFyZ2luLWxlZnQiOiAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJn
aW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIGxlZnQgc2lkZSBvZiBhIGJveCBhc3NvY2lhdGVkIHdp
dGggYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAi
bWFyZ2luLXJpZ2h0IjogIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1l
bnQgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIGFu
IGVsZW1lbnQuIEEgbmVnYXRpdmUgdmFsdWUgaXMgYWxzbyBhbGxvd2VkLiIsCisgICAgIm1hcmdp
bi10b3AiOiAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0
aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4gQSBuZWdh
dGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAibWF4LWhlaWdodCI6ICJUaGUgbWF4
LWhlaWdodCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBoZWlnaHQgb2YgYW4g
ZWxlbWVudC4gSXQgcHJldmVudHMgdGhlIHVzZWQgdmFsdWUgb2YgdGhlIGhlaWdodCBwcm9wZXJ0
eSBmcm9tIGJlY29taW5nIGxhcmdlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1heC1o
ZWlnaHQuIiwKKyAgICAibWF4LXdpZHRoIjogIlRoZSBtYXgtd2lkdGggcHJvcGVydHkgaXMgdXNl
ZCB0byBzZXQgdGhlIG1heGltdW0gd2lkdGggb2YgYSBnaXZlbiBlbGVtZW50LiBJdCBwcmV2ZW50
cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgd2lkdGggcHJvcGVydHkgZnJvbSBiZWNvbWluZyBsYXJn
ZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtYXgtd2lkdGguIiwKKyAgICAibWluLWhl
aWdodCI6ICJUaGUgbWluLWhlaWdodCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWluaW11
bSBoZWlnaHQgb2YgYSBnaXZlbiBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBv
ZiB0aGUgaGVpZ2h0IHByb3BlcnR5IGZyb20gYmVjb21pbmcgc21hbGxlciB0aGFuIHRoZSB2YWx1
ZSBzcGVjaWZpZWQgZm9yIG1pbi1oZWlnaHQuIiwKKyAgICAibWluLXdpZHRoIjogIlRoZSBtaW4t
d2lkdGggcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIG1pbmltdW0gd2lkdGggb2YgYSBnaXZl
biBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgd2lkdGggcHJvcGVy
dHkgZnJvbSBiZWNvbWluZyBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgbWlu
LXdpZHRoLiIsCisgICAgIm9wYWNpdHkiOiAiVGhlIG9wYWNpdHkgQ1NTIHByb3BlcnR5IHNwZWNp
ZmllcyB0aGUgdHJhbnNwYXJlbmN5IG9mIGFuIGVsZW1lbnQsIHRoYXQgaXMsIHRoZSBkZWdyZWUg
dG8gd2hpY2ggdGhlIGJhY2tncm91bmQgYmVoaW5kIHRoZSBlbGVtZW50IGlzIG92ZXJsYWlkLiIs
CisgICAgIm9yZGVyIjogIlRoZSBDU1Mgb3JkZXIgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvcmRl
ciB1c2VkIHRvIGxheSBvdXQgZmxleCBpdGVtcyBpbiB0aGVpciBmbGV4IGNvbnRhaW5lci4gRWxl
bWVudHMgYXJlIGxhaWQgb3V0IGluIHRoZcKgYXNjZW5kaW5nIG9yZGVyIG9mIHRoZSBvcmRlciB2
YWx1ZS4gRWxlbWVudHMgd2l0aCB0aGUgc2FtZSBvcmRlciB2YWx1ZSBhcmUgbGFpZCBvdXQgaW4g
dGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS4iLAorICAg
ICJvdXRsaW5lLWNvbG9yIjogIlRoZSBvdXRsaW5lLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRo
ZSBjb2xvciBvZiB0aGUgb3V0bGluZSBvZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGlu
ZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2Us
IHRvIG1ha2UgdGhlIGVsZW1lbnQgc3RhbmQgb3V0LiIsCisgICAgIm91dGxpbmUtb2Zmc2V0Ijog
IlRoZSBvdXRsaW5lLW9mZnNldCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgc3BhY2UgYmV0
d2VlbiBhbiBvdXRsaW5lIGFuZCB0aGUgZWRnZSBvciBib3JkZXIgb2YgYW4gZWxlbWVudC4gQW4g
b3V0bGluZSBpcyBhIGxpbmUgdGhhdCBpcyBkcmF3biBhcm91bmQgZWxlbWVudHMsIG91dHNpZGUg
dGhlIGJvcmRlciBlZGdlLiIsCisgICAgIm91dGxpbmUtc3R5bGUiOiAiVGhlIG91dGxpbmUtc3R5
bGUgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBzdHlsZSBvZiB0aGUgb3V0bGluZSBv
ZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBl
bGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UsIHRvIG1ha2UgdGhlIGVsZW1lbnQgc3Rh
bmQgb3V0LiIsCisgICAgIm91dGxpbmUtd2lkdGgiOiAiVGhlIG91dGxpbmUtd2lkdGggQ1NTIHBy
b3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSB3aWR0aCBvZiB0aGUgb3V0bGluZSBvZiBhbiBlbGVt
ZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywg
b3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UsIHRvIG1ha2UgdGhlIGVsZW1lbnQgc3RhbmQgb3V0OiIs
CisgICAgIm92ZXJmbG93IjogIlRoZSBvdmVyZmxvdyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhl
ciB0byBjbGlwIGNvbnRlbnQsIHJlbmRlciBzY3JvbGxiYXJzIG9yIGp1c3QgZGlzcGxheSBjb250
ZW50IHdoZW4gaXQgb3ZlcmZsb3dzIGl0cyBibG9jayBsZXZlbCBjb250YWluZXIuIiwKKyAgICAi
cGFkZGluZy1ib3R0b20iOiAiVGhlIHBhZGRpbmctYm90dG9tIENTUyBwcm9wZXJ0eSBvZiBhbiBl
bGVtZW50IHNldHMgdGhlIGhlaWdodCBvZiB0aGUgcGFkZGluZyBhcmVhIGF0IHRoZSBib3R0b20g
b2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3BhY2UgYmV0d2VlbiB0aGUg
Y29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXQncyBib3JkZXIuIENvbnRyYXJ5IHRvIG1hcmdp
bi1ib3R0b20gdmFsdWVzLCBuZWdhdGl2ZSB2YWx1ZXMgb2YgcGFkZGluZy1ib3R0b20gYXJlIGlu
dmFsaWQuIiwKKyAgICAicGFkZGluZy1sZWZ0IjogIlRoZSBwYWRkaW5nLWxlZnQgQ1NTIHByb3Bl
cnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgcGFkZGluZyBzcGFjZSByZXF1aXJlZCBvbiB0aGUg
bGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIFRoZSBwYWRkaW5nIGFyZWEgaXMgdGhlIHNwYWNlIGJl
dHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYW5kIGl0J3MgYm9yZGVyLiBBIG5lZ2F0
aXZlIHZhbHVlIGlzIG5vdCBhbGxvd2VkLiIsCisgICAgInBhZGRpbmctcmlnaHQiOiAiVGhlIHBh
ZGRpbmctcmlnaHQgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgcGFkZGluZyBz
cGFjZSByZXF1aXJlZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBUaGUgcGFkZGlu
ZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFu
ZCBpdHMgYm9yZGVyLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIsCisgICAgInBh
ZGRpbmctdG9wIjogIlRoZSBwYWRkaW5nLXRvcCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBz
ZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4g
VGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVudCBvZiB0aGUg
ZWxlbWVudCBhbmQgaXRzIGJvcmRlci4gQ29udHJhcnkgdG8gbWFyZ2luLXRvcCB2YWx1ZXMsIG5l
Z2F0aXZlIHZhbHVlcyBvZiBwYWRkaW5nLXRvcCBhcmUgaW52YWxpZC4iLAorICAgICJwb3NpdGlv
biI6ICJUaGUgcG9zaXRpb24gQ1NTIHByb3BlcnR5IGNob29zZXMgYWx0ZXJuYXRpdmUgcnVsZXMg
Zm9yIHBvc2l0aW9uaW5nIGVsZW1lbnRzLCBkZXNpZ25lZCB0byBiZSB1c2VmdWwgZm9yIHNjcmlw
dGVkIGFuaW1hdGlvbiBlZmZlY3RzLiIsCisgICAgInJpZ2h0IjogIlRoZSByaWdodCBDU1MgcHJv
cGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVu
dHMuIiwKKyAgICAidGV4dC1hbGlnbiI6ICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgZGVz
Y3JpYmVzIGhvdyBpbmxpbmUgY29udGVudCBsaWtlIHRleHQgaXMgYWxpZ25lZCBpbiBpdHMgcGFy
ZW50IGJsb2NrIGVsZW1lbnQuIHRleHQtYWxpZ24gZG9lcyBub3QgY29udHJvbCB0aGUgYWxpZ25t
ZW50IG9mIGJsb2NrIGVsZW1lbnRzIGl0c2VsZiwgb25seSB0aGVpciBpbmxpbmUgY29udGVudC4i
LAorICAgICJ0ZXh0LWRlY29yYXRpb24iOiAiVGhlIHRleHQtZGVjb3JhdGlvbiBDU1MgcHJvcGVy
dHkgaXMgdXNlZCB0byBzZXQgdGhlIHRleHQgZm9ybWF0dGluZyB0byB1bmRlcmxpbmUsIG92ZXJs
aW5lLCBsaW5lLXRocm91Z2ggb3IgYmxpbmsuIFVuZGVybGluZSBhbmQgb3ZlcmxpbmUgZGVjb3Jh
dGlvbnMgYXJlIHBvc2l0aW9uZWQgdW5kZXIgdGhlIHRleHQsIGxpbmUtdGhyb3VnaCBvdmVyIGl0
LiIsCisgICAgInRleHQtaW5kZW50IjogIlRoZSB0ZXh0LWluZGVudCBwcm9wZXJ0eSBzcGVjaWZp
ZXMgaG93IG11Y2ggaG9yaXpvbnRhbCBzcGFjZSBzaG91bGQgYmUgbGVmdCBiZWZvcmUgdGhlIGJl
Z2lubmluZyBvZiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdGV4dCBjb250ZW50IG9mIGFuIGVsZW1l
bnQuIiwKKyAgICAidGV4dC1zaGFkb3ciOiAiVGhlIHRleHQtc2hhZG93IHByb3BlcnR5IGFkZHMg
c2hhZG93cyB0byB0ZXh0LiBJdCBhY2NlcHRzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc2hh
ZG93cyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0ZXh0IGFuZCB0ZXh0LWRlY29yYXRpb25zIG9mIHRo
ZSBlbGVtZW50LiIsCisgICAgInRleHQtdHJhbnNmb3JtIjogIlRoZSB0ZXh0LXRyYW5zZm9ybSBD
U1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyB0byBjYXBpdGFsaXplIGFuIGVsZW1lbnQncyB0ZXh0
LiBJdCBjYW4gYmUgdXNlZCB0byBtYWtlIHRleHQgYXBwZWFyIGluIGFsbC11cHBlcmNhc2Ugb3Ig
YWxsLWxvd2VyY2FzZSwgb3Igd2l0aCBlYWNoIHdvcmQgY2FwaXRhbGl6ZWQuIiwKKyAgICAidG9w
IjogIlRoZSB0b3AgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBwYXJ0IG9mIHRoZSBwb3NpdGlvbiBv
ZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiBJdCBoYXMgbm8gZWZmZWN0IG9uIG5vbi1wb3NpdGlvbmVk
IGVsZW1lbnRzLiIsCisgICAgInRyYW5zaXRpb24tZGVsYXkiOiAiVGhlIHRyYW5zaXRpb24tZGVs
YXkgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJldHdlZW4g
YSBjaGFuZ2UgYmVpbmcgcmVxdWVzdGVkIHRvIGEgcHJvcGVydHkgdGhhdCBpcyB0byBiZSB0cmFu
c2l0aW9uZWQgYW5kIHRoZSBzdGFydCBvZiB0aGUgdHJhbnNpdGlvbiBlZmZlY3QuIiwKKyAgICAi
dHJhbnNpdGlvbi1kdXJhdGlvbiI6ICJUaGUgdHJhbnNpdGlvbi1kdXJhdGlvbiBDU1MgcHJvcGVy
dHkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBvciBtaWxsaXNlY29uZHMgYSB0cmFu
c2l0aW9uIGFuaW1hdGlvbiBzaG91bGQgdGFrZSB0byBjb21wbGV0ZS4gQnkgZGVmYXVsdCwgdGhl
IHZhbHVlIGlzIDBzLCBtZWFuaW5nIHRoYXQgbm8gYW5pbWF0aW9uIHdpbGwgb2NjdXIuIiwKKyAg
ICAidHJhbnNpdGlvbi1wcm9wZXJ0eSI6ICJUaGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSBDU1MgcHJv
cGVydHkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lcyBvZiBDU1MgcHJvcGVydGllcyB0byB3
aGljaCBhIHRyYW5zaXRpb24gZWZmZWN0IHNob3VsZCBiZSBhcHBsaWVkLiIsCisgICAgInRyYW5z
aXRpb24tdGltaW5nLWZ1bmN0aW9uIjogIlRoZSB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiBw
cm9wZXJ0eSBpcyB1c2VkIHRvIGRlc2NyaWJlIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBv
ZiB0aGUgQ1NTwqBwcm9wZXJ0aWVzIGJlaW5nIGFmZmVjdGVkIGJ5IGEgdHJhbnNpdGlvbiBlZmZl
Y3QgYXJlIGNhbGN1bGF0ZWQuIFRoaXMgaW4gZXNzZW5jZSBsZXRzIHlvdSBlc3RhYmxpc2ggYW4g
YWNjZWxlcmF0aW9uIGN1cnZlLCBzbyB0aGF0IHRoZSBzcGVlZCBvZiB0aGUgdHJhbnNpdGlvbiBj
YW4gdmFyeSBvdmVyIGl0cyBkdXJhdGlvbi4iLAorICAgICJ2ZXJ0aWNhbC1hbGlnbiI6ICJUaGUg
dmVydGljYWwtYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgdmVydGljYWwgYWxpZ25t
ZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4iLAorICAgICJ2aXNpYmlsaXR5Ijog
IlRoZSB2aXNpYmlsaXR5IHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGhpZGUgYW4gZWxlbWVudCB3
aGlsZSBsZWF2aW5nIHRoZSBzcGFjZSB3aGVyZSBpdCB3b3VsZCBoYXZlIGJlZW4uIEl0IGNhbiBh
bHNvIGhpZGUgcm93cyBvciBjb2x1bW5zIG9mIGEgdGFibGUuIiwKKyAgICAid2hpdGUtc3BhY2Ui
OiAiVGhlIHdoaXRlLXNwYWNlIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVzY3JpYmUgaG93IHdoaXRl
c3BhY2UgaW5zaWRlIHRoZSBlbGVtZW50IGlzIGhhbmRsZWQuIiwKKyAgICAid2lkdGgiOiAiVGhl
IHdpZHRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFy
ZWEgb2YgYW4gZWxlbWVudC4gVGhlIGNvbnRlbnQgYXJlYSBpcyBpbnNpZGUgdGhlIHBhZGRpbmcs
IGJvcmRlciwgYW5kIG1hcmdpbiBvZiB0aGUgZWxlbWVudC4iLAorICAgICJ3b3JkLXNwYWNpbmci
OiAiVGhlIHdvcmQtc3BhY2luZ8KgcHJvcGVydHkgc3BlY2lmaWVzIHNwYWNpbmcgYmVoYXZpb3Ig
YmV0d2VlbiB0YWdzIGFuZCB3b3Jkcy4iLAorICAgICJ6LWluZGV4IjogIlRoZSB6LWluZGV4IHBy
b3BlcnR5IHNwZWNpZmllcyB0aGUgei1vcmRlciBvZiBhbiBlbGVtZW50IGFuZCBpdHMgZGVzY2Vu
ZGFudHMuIFdoZW4gZWxlbWVudHMgb3ZlcmxhcCwgei1vcmRlciBkZXRlcm1pbmVzIHdoaWNoIG9u
ZSBjb3ZlcnMgdGhlIG90aGVyLiBBbiBlbGVtZW50IHdpdGggYSBsYXJnZXIgei1pbmRleCBnZW5l
cmFsbHkgY292ZXJzIGFuIGVsZW1lbnQgd2l0aCBhIGxvd2VyIG9uZS4iCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZv
bnRGYW1pbHlMaXN0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzM5OGIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5
TGlzdEVkaXRvci5qcwpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvcgoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRl
eHQsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywg
dGV4dCwgdHJ1ZSwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJh
dGVkS2V5d29yZHMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9oaWRl
Q29tcGxldGlvbnMuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRy
b2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVy
KHRoaXMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5FdmVudC5D
b21wbGV0aW9uU2VsZWN0ZWQsIHRoaXMuX2NvbXBsZXRpb25DbGlja2VkLCB0aGlzKTsKKworICAg
ICAgICB0aGlzLl93cmFwV2l0aFF1b3Rlc1JlZ0V4cCA9IC9eW2EtekEtWlwtXSskLzsKKyAgICAg
ICAgdGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCA9IC9bXCJcJ10vZzsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIGNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQo
ZWxlbWVudCwgaXRlbSkKKyAgICB7CisgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9
IGl0ZW07CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oYXNDb21wbGV0aW9uczsKKyAgICB9
CisKKyAgICBzZXQgY29tcGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uQ29udHJvbGxlci5jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOworICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9tb2RpZnlDb21tYVNlcGFyYXRlZEtleXdvcmQodGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fd3JhcFdpdGhRdW90ZXNSZWdFeHAudGVzdCh0
ZXh0KSkKKyAgICAgICAgICAgIHRleHQgPSAiXCIiICsgdGV4dCArICJcIiI7CisKKyAgICAgICAg
cmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1
ZSwgaW5kZXgpCisgICAgeworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9
IHZhbHVlLnJlcGxhY2UodGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCwgIiIpOworCisg
ICAgICAgIHZhciB2YWx1ZUVsZW1lbnQgPSBzdXBlci5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KHZhbHVlLCBpbmRleCk7CisgICAgICAgIHZhbHVlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlE
b3duLCB0aGlzLl9pdGVtRWRpdG9yS2V5RG93biwgdGhpcyk7CisgICAgICAgIHZhbHVlRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
SXRlbS5FdmVudC5LZXl3b3JkQ2hhbmdlZCwgdGhpcy5faXRlbUVkaXRvcktleXdvcmRDaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVkaXRvckJsdXJyZWQsIHRo
aXMuX2hpZGVDb21wbGV0aW9ucywgdGhpcyk7CisgICAgICAgIHJldHVybiB2YWx1ZUVsZW1lbnQ7
CisgICAgfQorCisgICAgX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7Cisg
ICAgICAgIHZhciBuZXdJdGVtID0gc3VwZXIuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KCk7CisgICAgICAgIG5ld0l0ZW0uc2hvd0tleXdvcmRFZGl0b3IoKTsKKyAgICB9CisKKyAgICBf
Y29tcGxldGlvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnZhbHVlID0gZXZl
bnQuZGF0YS50ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKwor
ICAgIF9pdGVtRWRpdG9yS2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB2YXIga2V5ID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLmtleTsKKyAg
ICAgICAgaWYgKCFrZXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGtleSA9
PT0gIkVudGVyIiB8fCBrZXkgPT09ICJUYWIiKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRU
cmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxl
bWVudDsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQudXBkYXRlTWFp
blRpdGxlKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmN1cnJlbnRDb21wbGV0aW9uKTsKKyAg
ICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJFc2NhcGUiKSB7Cisg
ICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAg
IHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIF9pdGVtRWRpdG9yS2V5d29yZENoYW5nZWQoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0NvbXBsZXRpb25zKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgICAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdHJlZUl0
ZW0gPSB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Cisg
ICAgICAgIGlmICghdHJlZUl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZSh0cmVlSXRlbS5tYWluVGl0bGUpKSB7
CisgICAgICAgICAgICB2YXIgYm91bmRzID0gdHJlZUl0ZW0uZWRpdG9yQm91bmRzKDIpOworICAg
ICAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5zaG93KGJvdW5kcyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBfaGlkZUNvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nv
bXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICB9CisKKyAgICBfY3JlYXRlTmV3TGlzdEl0
ZW0odmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbSh2YWx1ZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZh
bWlseUxpc3RJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDYxYjM3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVt
LmpzCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RJdGVtID0gY2xhc3MgVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0
ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3Ry
dWN0b3IodGV4dCkKKyAgICB7CisgICAgICAgIHN1cGVyKFtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuTGlzdEl0ZW1DbGFzc05hbWUsICJ2aXN1YWwt
c3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtIl0sIHRleHQpOworCisgICAgICAgIHRoaXMuX2tl
eXdvcmRFZGl0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICB0
aGlzLl9rZXl3b3JkRWRpdG9yLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvciIpOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9y
LnBsYWNlaG9sZGVyID0gIigiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJtb2RpZnkgdGhlIGJv
eGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlIikgKyAiKSI7CisgICAgICAgIHRoaXMuX2tleXdvcmRF
ZGl0b3Iuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXl3b3JkRWRpdG9yS2V5RG93bi5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJr
ZXl1cCIsIHRoaXMuX2tleXdvcmRFZGl0b3JLZXlVcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fa2V5d29yZEVk
aXRvckJsdXJyZWQuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBl
ZGl0b3JCb3VuZHMocGFkZGluZykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmtleXdvcmRFZGl0
b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGJvdW5kcyA9IFdl
Ykluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9rZXl3b3JkRWRpdG9yLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGJvdW5kcy5wYWQocGFkZGlu
ZyB8fCAwKTsKKyAgICB9CisKKyAgICB1cGRhdGVNYWluVGl0bGUodGV4dCkKKyAgICB7CisgICAg
ICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnN0eWxlLmZvbnRGYW1pbHkg
PSB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlID0gdGV4dDsKKworICAgICAgICB2YXIgaGFzVGV4
dCA9IHRleHQgJiYgdGV4dC5sZW5ndGg7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFz
c0xpc3QudG9nZ2xlKCJuby12YWx1ZSIsICFoYXNUZXh0KTsKKyAgICAgICAgaWYgKCFoYXNUZXh0
KQorICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMuX2tleXdvcmRFZGl0b3IucGxhY2Vo
b2xkZXI7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LktleXdvcmRDaGFuZ2VkKTsK
KyAgICB9CisKKyAgICBzaG93S2V5d29yZEVkaXRvcigpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLnN1YnRpdGxlID0gIiI7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
cmVtb3ZlKCJlZGl0b3ItaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5zY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKCk7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci52YWx1
ZSA9IHRoaXMuX21haW5UaXRsZTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5zZWxlY3Qo
KTsKKyAgICB9CisKKyAgICBoaWRlS2V5d29yZEVkaXRvcigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMudXBkYXRlTWFpblRpdGxlKHRoaXMuX2tleXdvcmRFZGl0b3IudmFsdWUpOworICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRlbiIpOworICAg
IH0KKworICAgIGdldCBrZXl3b3JkRWRpdG9ySGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJlZGl0b3ItaGlkZGVuIik7
CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpCisK
KyAgICBvbmF0dGFjaCgpCisgICAgeworICAgICAgICBzdXBlci5vbmF0dGFjaCgpOworCisgICAg
ICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5zdHlsZS5mb250RmFtaWx5ID0gdGhpcy5fbWFpblRpdGxl
OworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRl
biIpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fa2V5d29y
ZEVkaXRvcik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuc2hvd0tleXdvcmRFZGl0b3IuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAg
b25kZXNlbGVjdCgpCisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3b3JkRWRpdG9yKCk7Cisg
ICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlEb3duKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7CisgICAg
ICAgIGlmIChrZXlDb2RlID09PSAxMykgeworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2Rl
LmNsYXNzTGlzdC5hZGQoImVkaXRvci1oaWRkZW4iKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiRW50ZXIifSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMjcpIHsKKyAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiRXNjYXBl
In0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50
LmtleUNvZGUgPT09IDkpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cisg
ICAgICAgICAgICB0aGlzLl9kb250RmlyZUtleVVwID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiVGFiIn0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGtleSA9IGV2ZW50LmtleUlkZW50
aWZpZXI7CisgICAgICAgIGlmIChrZXkgPT09ICJVcCIgfHwga2V5ID09PSAiRG93biIpIHsKKyAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB0aGlzLl9kb250
RmlyZUtleVVwID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0
b3JLZXlEb3duLCB7a2V5fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5TGlzdEl0ZW0uRXZlbnQuRWRpdG9yS2V5RG93bik7CisgICAgfQorCisgICAg
X2tleXdvcmRFZGl0b3JLZXlVcCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5rZXl3b3JkRWRp
dG9ySGlkZGVuIHx8IHRoaXMuX2RvbnRGaXJlS2V5VXApCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy51cGRhdGVNYWluVGl0bGUodGhpcy5fa2V5d29yZEVkaXRvci52YWx1ZSk7
CisgICAgfQorCisgICAgX2tleXdvcmRFZGl0b3JCbHVycmVkKCkKKyAgICB7CisgICAgICAgIHRo
aXMuaGlkZUtleXdvcmRFZGl0b3IoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVk
aXRvckJsdXJyZWQpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRG
YW1pbHlMaXN0SXRlbS5FdmVudCA9IHsKKyAgICBLZXl3b3JkQ2hhbmdlZDogInZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWtleXdvcmQtY2hhbmdlZCIsCisgICAgRWRp
dG9yS2V5RG93bjogInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVk
aXRvci1rZXktZG93biIsCisgICAgRWRpdG9yQmx1cnJlZDogInZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvci1ibHVycmVkIgorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29y
ZENoZWNrYm94LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mNDdmOTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guY3NzCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5rZXl3b3JkLWNoZWNrYm94ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1jaGVja2JveCA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gaW5wdXQgeworICAgIG9yZGVy
OiAxOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDRweDsKKyAgICB3aWR0aDog
YXV0bzsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1jaGVj
a2JveCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gZGl2IHsKKyAg
ICB3aWR0aDogMThweDsKKyAgICBtYXJnaW46IDAgMnB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hl
Y2tib3guanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZUtleXdvcmRDaGVja2JveC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kOWViZmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guanMKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRDaGVj
a2JveCA9IGNsYXNzIFZpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0
eU5hbWVzLCB0ZXh0LCB2YWx1ZSwgY2hlY2tib3hJbWFnZSwgbGF5b3V0UmV2ZXJzZWQpCisgICAg
eworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBudWxsLCBudWxsLCAia2V5d29y
ZC1jaGVja2JveCIsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl92YWx1ZSA9IHZh
bHVlIHx8IG51bGw7CisKKyAgICAgICAgdGhpcy5fY2hlY2tib3ggPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbnB1dCIpOworICAgICAgICB0aGlzLl9jaGVja2JveC50eXBlID0gImNoZWNrYm94
IjsKKyAgICAgICAgdGhpcy5fY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhp
cy5fdmFsdWVEaWRDaGFuZ2UuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NoZWNrYm94KTsKKworICAgICAgICBpZiAoY2hlY2tib3hJ
bWFnZSkgeworICAgICAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KGNoZWNrYm94SW1hZ2UsIG51
bGwsIHZhbHVlLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY29u
dGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgICAgICB9LmJpbmQodGhp
cykpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdmFsdWVSZWdFeHAgPSAvXihbXjtdKylc
cyo7PyQvOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9jaGVja2JveC5jaGVja2VkID8gdGhpcy5fdmFsdWUgOiBu
dWxsOworICAgIH0KKworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X2NoZWNrYm94LmNoZWNrZWQgPSB2YWx1ZSA9PT0gdGhpcy5fdmFsdWU7CisgICAgfQorCisgICAg
Z2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0LmNzcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0LmNz
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWEzNDA2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVLZXl3b3JkSWNvbkxpc3QuY3NzCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBtYXJnaW46IDFweCAwIDJw
eDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1pY29uLWxp
c3QgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLWlj
b24tbGlzdC1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNvbi1saXN0ID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29yZC1pY29uLWxpc3QtY29udGFpbmVyID4g
LmtleXdvcmQtaWNvbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAyNnB4
OworICAgIGhlaWdodDogMThweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCBsaWdodGdyZXk7CisgICAgYm9yZGVyLXJpZ2h0OiBub25lOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi1saXN0
LWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb246Zmlyc3QtY2hpbGQgeworICAgIGJvcmRlci10b3At
bGVmdC1yYWRpdXM6IDRweDsKKyAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNvbi1saXN0ID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29yZC1pY29uLWxp
c3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbjpsYXN0LWNoaWxkIHsKKyAgICBib3JkZXItcmln
aHQ6IDFweCBzb2xpZCBsaWdodGdyZXk7CisgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRw
eDsKKyAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi1saXN0LWNvbnRhaW5lciA+
IC5rZXl3b3JkLWljb246bWF0Y2hlcyguY29tcHV0ZWQsIC5zZWxlY3RlZCkgeworICAgIHdpZHRo
OiAyN3B4OworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkOworICAgIGJvcmRlci1jb2xvcjog
cmdiKDM0LCAxMzEsIDI0Nik7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmtleXdvcmQtaWNvbi1saXN0ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAua2V5d29yZC1pY29uLWxpc3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi5zZWxlY3Rl
ZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDM0LCAxMzEsIDI0Nik7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNvbi1saXN0ID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29yZC1pY29uLWxpc3QtY29udGFp
bmVyID4gLmtleXdvcmQtaWNvbi5zZWxlY3RlZCBzdmcgLnN0cm9rZWQgeworICAgIHN0cm9rZTog
d2hpdGU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNv
bi1saXN0ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29y
ZC1pY29uLWxpc3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi5zZWxlY3RlZCBzdmcgLmZpbGxl
ZCB7CisgICAgZmlsbDogd2hpdGU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyLmtleXdvcmQtaWNvbi1saXN0ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgPiAua2V5d29yZC1pY29uLWxpc3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbjptYXRj
aGVzKC5jb21wdXRlZCwgLnNlbGVjdGVkKSArIC5rZXl3b3JkLWljb24geworICAgIHdpZHRoOiAy
NXB4OworICAgIGJvcmRlci1sZWZ0OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi1saXN0LWNvbnRhaW5lciA+IC5rZXl3b3JkLWlj
b24gPiBkaXYgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVm
dDogNXB4OworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKyAgICBwb2ludGVy
LWV2ZW50czogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5
d29yZC1pY29uLWxpc3QgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5rZXl3b3JkLWljb24tbGlzdC1jb250YWluZXIgPiAua2V5d29yZC1pY29uOm5vdCguc2VsZWN0
ZWQpID4gZGl2IHsKKyAgICBvcGFjaXR5OiAwLjc7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlz
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlS2V5d29yZEljb25MaXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdjNjIxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5qcwpAQCAtMCwwICsxLDEx
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlz
dCA9IGNsYXNzIFZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5h
bWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAg
ICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgImtleXdv
cmQtaWNvbi1saXN0IiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2ljb25MaXN0
Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2ljb25MaXN0Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImtleXdvcmQtaWNvbi1saXN0LWNvbnRh
aW5lciIpOworCisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50cyA9IFtdOworICAgICAgICB0aGlz
Ll9jb21wdXRlZEljb24gPSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3RlZEljb24gPSBudWxs
OworCisgICAgICAgIHZhciBwcmV0dHlQcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSB0aGlzLl9wcm9w
ZXJ0eVJlZmVyZW5jZU5hbWUuY2FwaXRhbGl6ZSgpLnJlcGxhY2UoLygtLikvZyxmdW5jdGlvbih4
KXsgcmV0dXJuIHhbMV0udG9VcHBlckNhc2UoKSB9KTsKKworICAgICAgICBmdW5jdGlvbiBjcmVh
dGVMaXN0SXRlbSh2YWx1ZSwgdGl0bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpY29u
QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBp
Y29uQnV0dG9uLmlkID0gdmFsdWU7CisgICAgICAgICAgICBpY29uQnV0dG9uLnRpdGxlID0gdGl0
bGU7CisgICAgICAgICAgICBpY29uQnV0dG9uLmNsYXNzTGlzdC5hZGQoImtleXdvcmQtaWNvbiIp
OworICAgICAgICAgICAgaWNvbkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2hhbmRsZUtleXdvcmRDaGFuZ2VkLmJpbmQodGhpcykpOworCisgICAgICAgICAgICB2YXIgaW1h
Z2VOYW1lID0gdmFsdWUgPT09ICJub25lIiA/ICJWaXN1YWxTdHlsZU5vbmUiIDogcHJldHR5UHJv
cGVydHlSZWZlcmVuY2VOYW1lICsgdGl0bGUucmVwbGFjZSgvXHMvZywgIiIpOworICAgICAgICAg
ICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvIiArIGltYWdlTmFtZSArICIuc3ZnIiwgbnVs
bCwgbnVsbCwgZnVuY3Rpb24od3JhcHBlcikgeworICAgICAgICAgICAgICAgIGljb25CdXR0b24u
YXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAg
ICAgICAgICByZXR1cm4gaWNvbkJ1dHRvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFy
IGtleSBpbiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykgeworICAgICAgICAgICAgdmFyIGlj
b24gPSBjcmVhdGVMaXN0SXRlbS5jYWxsKHRoaXMsIGtleSwgdGhpcy5fcG9zc2libGVWYWx1ZXMu
YmFzaWNba2V5XSk7CisgICAgICAgICAgICB0aGlzLl9pY29uTGlzdENvbnRhaW5lci5hcHBlbmRD
aGlsZChpY29uKTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50cy5wdXNoKGljb24pOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5faWNvbkxpc3RDb250YWluZXIpOworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC9eKFte
O10rKVxzKjs/JC87CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEljb24pCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJY29uLmlkOworICAgIH0K
KworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkSWNv
biA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSWNvbiA9IG51bGw7CisgICAgICAgIGZv
ciAodmFyIGljb24gb2YgdGhpcy5faWNvbkVsZW1lbnRzKSB7CisgICAgICAgICAgICBpZiAoaWNv
bi5pZCA9PT0gdGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jb21wdXRlZEljb24gPSBpY29uOworCisgICAgICAgICAgICBpZiAoaWNvbi5pZCA9
PT0gdmFsdWUgJiYgIXRoaXMuX3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNzaW5nKQorICAgICAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSWNvbiA9IGljb247CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgaWNvbi5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIsICJjb21wdXRl
ZCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9jb21wdXRlZEljb24pCisgICAg
ICAgICAgICB0aGlzLl9jb21wdXRlZEljb24gPSB0aGlzLl9pY29uRWxlbWVudHNbMF07CisKKyAg
ICAgICAgdmFyIHNlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWRJY29uICYmIHRoaXMuX3NlbGVjdGVk
SWNvbi5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIpOworICAgICAgICBpZiAoIXNlbGVjdGVk
KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEljb24gPSBudWxsOworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1pc3NpbmcgPSB0cnVlOworICAgICAgICAgICAg
dGhpcy5fY29tcHV0ZWRJY29uLmNsYXNzTGlzdC5hZGQoImNvbXB1dGVkIik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy52YWx1ZTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlS2V5
d29yZENoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzLnBy
b3BlcnR5TWlzc2luZyA9IGZhbHNlOworICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0
LmlkOworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUtleXdvcmRQaWNrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOThkZDU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZFBpY2tlci5qcwpAQCAt
MCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvcgoreworICAgIGNvbnN0cnVjdG9yKHByb3Bl
cnR5TmFtZXMsIHRleHQsIHBvc3NpYmxlVmFsdWVzLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIHBvc3NpYmxlVmFsdWVzLCBudWxsLCAi
a2V5d29yZC1waWNrZXIiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fa2V5d29y
ZFNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgICAgICB0aGlz
Ll9rZXl3b3JkU2VsZWN0LmNsYXNzTGlzdC5hZGQoImtleXdvcmQtcGlja2VyLXNlbGVjdCIpOwor
ICAgICAgICBpZiAodGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpCisgICAgICAgICAgICB0
aGlzLl9rZXl3b3JkU2VsZWN0LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbHQgQ2xp
Y2sgdG8gc2hvdyBhbGwgdmFsdWVzIik7CisKKyAgICAgICAgdGhpcy5fYWRkVmFsdWVzKHRoaXMu
X3Bvc3NpYmxlVmFsdWVzLmJhc2ljKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVt
ZW50cyA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duLmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIs
IHRoaXMuX2hhbmRsZUtleXdvcmRDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9j
b250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9rZXl3b3JkU2VsZWN0KTsKKworICAgICAg
ICB0aGlzLl91bmNoYW5nZWRPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24i
KTsKKyAgICAgICAgdGhpcy5fdW5jaGFuZ2VkT3B0aW9uLnZhbHVlID0gIiI7CisgICAgICAgIHRo
aXMuX3VuY2hhbmdlZE9wdGlvbi50ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVbmNoYW5n
ZWQiKTsKKworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC9eKFteO10rKVxzKjs/JC87Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2tleXdvcmRTZWxlY3QudmFsdWU7CisgICAgfQorCisgICAgc2V0IHZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlN
aXNzaW5nIHx8ICF0aGlzLnZhbHVlSXNLZXl3b3JkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQodmFsdWUpKQor
ICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRWYWx1ZXMoKTsKKworICAgICAgICB0aGlzLl9r
ZXl3b3JkU2VsZWN0LnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVy
KHBsYWNlaG9sZGVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vo
b2xkZXIudGV4dENvbnRlbnQgPSB0aGlzLl9rZXlGb3JLZXl3b3JkKHBsYWNlaG9sZGVyKSB8fCBw
bGFjZWhvbGRlcjsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgewor
ICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9rZXl3b3JkU2VsZWN0LnZhbHVlOworICAgICAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgdXBkYXRlRWRpdG9yVmFsdWVzKHVw
ZGF0ZWRWYWx1ZXMpCisgICAgeworICAgICAgICBpZiAodXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1p
c3NpbmcgfHwgIXVwZGF0ZWRWYWx1ZXMudmFsdWUpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5f
a2V5d29yZFNlbGVjdC5jb250YWlucyh0aGlzLl91bmNoYW5nZWRPcHRpb24pKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGRpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpOworICAg
ICAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3QuaW5zZXJ0QmVmb3JlKGRpdmlkZXIsIHRo
aXMuX2tleXdvcmRTZWxlY3QuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgdGhpcy5fa2V5
d29yZFNlbGVjdC5pbnNlcnRCZWZvcmUodGhpcy5fdW5jaGFuZ2VkT3B0aW9uLCBkaXZpZGVyKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fdW5jaGFuZ2VkT3B0aW9uLnNlbGVj
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVy
LmhpZGRlbiA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2tleXdvcmRTZWxlY3Qu
Y29udGFpbnModGhpcy5fdW5jaGFuZ2VkT3B0aW9uKSkgeworICAgICAgICAgICAgdGhpcy5fdW5j
aGFuZ2VkT3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0LnJlbW92ZUNoaWxkKHRoaXMuX3VuY2hhbmdlZE9wdGlvbik7CisgICAgICAgICAgICB0
aGlzLl9rZXl3b3JkU2VsZWN0LnJlbW92ZUNoaWxkKHRoaXMuX2tleXdvcmRTZWxlY3QuZmlyc3RD
aGlsZCk7CisgICAgICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlci5oaWRk
ZW4gPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIudXBkYXRlRWRpdG9yVmFsdWVz
KHVwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVL
ZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOwor
CisgICAgICAgIGlmICh0aGlzLl9rZXl3b3JkU2VsZWN0LmNvbnRhaW5zKHRoaXMuX3VuY2hhbmdl
ZE9wdGlvbikgJiYgdGhpcy5fdW5jaGFuZ2VkT3B0aW9uLnNlbGVjdGVkKQorICAgICAgICAgICAg
dGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIuaGlkZGVuID0gZmFsc2U7CisgICAgfQor
CisgICAgX2tleXdvcmRTZWxlY3RNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAo
ZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRWYWx1ZXMoKTsKKyAg
ICAgICAgZWxzZSBpZiAoIXRoaXMuX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQoKSkKKyAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZUFkdmFuY2VkVmFsdWVzKCk7CisgICAgfQorCisgICAgX2FkZFZhbHVl
cyh2YWx1ZXMpCisgICAgeworICAgICAgICB2YXIgYWRkZWRFbGVtZW50cyA9IFtdOworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gdmFsdWVzKSB7CisgICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udmFsdWUg
PSBrZXk7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9IHZhbHVlc1trZXldOworICAgICAgICAg
ICAgdGhpcy5fa2V5d29yZFNlbGVjdC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgICAgICAgICAg
YWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
YWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBfYWRkQWR2YW5jZWRWYWx1ZXMoKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2FkdmFuY2VkVmFsdWVzRWxlbWVudHMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJociIpKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVt
ZW50cyA9IHRoaXMuX2FkZFZhbHVlcyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCk7Cisg
ICAgfQorCisgICAgX3JlbW92ZUFkdmFuY2VkVmFsdWVzKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0LnJlbW92ZUNoaWxkKHRoaXMuX2FkdmFuY2VkVmFsdWVz
RWxlbWVudHNbMF0ucHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgZm9yICh2YXIgZWxlbWVudCBv
ZiB0aGlzLl9hZHZhbmNlZFZhbHVlc0VsZW1lbnRzKQorICAgICAgICAgICAgdGhpcy5fa2V5d29y
ZFNlbGVjdC5yZW1vdmVDaGlsZChlbGVtZW50KTsKKworICAgICAgICB0aGlzLl9hZHZhbmNlZFZh
bHVlc0VsZW1lbnRzID0gbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
ZWYwZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3MKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZm9jdXNlZCA+IC5mb2N1cy1yaW5nIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVmdDogMXB4Owor
ICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxLjVweCk7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIGJv
cmRlci1yYWRpdXM6IDNweDsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4xNSkg
MCAxcHggMCwgMCAwIDAgM3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMC4yNSk7CisgICAgcG9pbnRl
ci1ldmVudHM6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWtl
eXdvcmQtc2VsZWN0IHsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLm51bWJlci1pbnB1dC1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsKKyAgICB3aWR0
aDogY2FsYygxMDAlIC0gMjBweCk7CisgICAgbGluZS1oZWlnaHQ6IDE2cHg7CisgICAgdGV4dC1h
bGlnbjogcmlnaHQ7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJhY2tncm91bmQtY29s
b3I6IHdoaXRlOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIG92ZXJmbG93OiBoaWRk
ZW47CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3Qo
Lm51bWJlci1pbnB1dC1lZGl0YWJsZSkgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtY29u
dGFpbmVyID4gLm51bWJlci1pbnB1dC12YWx1ZSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxNnB4OworICAgIG1hcmdpbi1yaWdodDogMXB4OworICAgIHBhZGRpbmc6IDAgMCAxcHgg
M3B4OworICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKKyAgICB0ZXh0LWFsaWdu
OiByaWdodDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBwb2lu
dGVyLWV2ZW50czogYWxsOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1j
b250YWluZXIgPiBzcGFuIHsKKyAgICBtaW4td2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTE5MjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveC5qcwpAQCAtMCwwICsxLDMyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94ID0gY2xhc3MgVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAgY29u
c3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5p
dHMsIGFsbG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAg
c3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMg
fHwgWyJObyBVbml0cyJdLCAibnVtYmVyLWlucHV0LWJveCIsIGxheW91dFJldmVyc2VkKTsKKwor
ICAgICAgICB0aGlzLl9oYXNVbml0cyA9ICEhcG9zc2libGVVbml0czsKKyAgICAgICAgdGhpcy5f
YWxsb3dOZWdhdGl2ZVZhbHVlcyA9IGFsbG93TmVnYXRpdmVWYWx1ZXMgfHwgZmFsc2U7CisKKyAg
ICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibm8tdmFsdWVzIiwg
IXBvc3NpYmxlVmFsdWVzIHx8ICFwb3NzaWJsZVZhbHVlcy5sZW5ndGgpOworICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJuby11bml0cyIsICF0aGlzLl9oYXNV
bml0cyk7CisKKyAgICAgICAgdmFyIGZvY3VzUmluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICBmb2N1c1JpbmcuY2xhc3NMaXN0LmFkZCgiZm9jdXMtcmluZyIpOwor
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChmb2N1c1JpbmcpOworCisg
ICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxl
Y3QiKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdC5jbGFzc0xpc3QuYWRkKCJudW1iZXIt
aW5wdXQta2V5d29yZC1zZWxlY3QiKTsKKyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMu
YWR2YW5jZWQpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0LnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJBbHQgQ2xpY2sgdG8gc2hvdyBhbGwgdW5pdHMiKTsKKworICAgICAg
ICBpZiAodGhpcy5fcG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX2FkZFZhbHVl
cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYyk7CisgICAgICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICB0aGlz
Ll9hZGRVbml0cyh0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2ljKTsKKworICAgICAgICB0aGlzLl9h
ZHZhbmNlZFVuaXRzRWxlbWVudHMgPSBudWxsOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxl
Y3QuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1c0NvbnRlbnRFbGVtZW50LmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX2tleXdvcmRTZWxlY3RNb3VzZURvd24uYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhp
cy5faGFuZGxlS2V5d29yZENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2tleXdv
cmRTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXJDb250ZW50RWxlbWVu
dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fa2V5d29yZFNlbGVjdCk7CisKKyAgICAgICAgdGhpcy5fbnVtYmVyVW5pdHNDb250YWlu
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fbnVtYmVy
VW5pdHNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWNvbnRhaW5lciIpOwor
CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0LmNsYXNzTGlzdC5hZGQo
Im51bWJlci1pbnB1dC12YWx1ZSIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0LnNw
ZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dC5hZGRFdmVu
dExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzQ29udGVudEVsZW1lbnQuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93
biIsIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl92YWx1ZU51bWJlcklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5faGFu
ZGxlTnVtYmVySW5wdXRDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl92YWx1ZU51
bWJlcklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyQ29udGVudEVsZW1l
bnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyLmFwcGVu
ZENoaWxkKHRoaXMuX3ZhbHVlTnVtYmVySW5wdXQpOworCisgICAgICAgIHRoaXMuX3VuaXRzRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fbnVt
YmVyVW5pdHNDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdW5pdHNFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbnVtYmVyVW5pdHNDb250
YWluZXIpOworCisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51
bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0LnZh
bHVlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dC5zZXRBdHRyaWJ1dGUo
InBsYWNlaG9sZGVyIiwgMCk7CisgICAgICAgIGlmICh0aGlzLl9oYXNVbml0cyAmJiB0aGlzLnZh
bHVlSXNVbml0KCJweCIpKQorICAgICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250
ZW50ID0gdGhpcy5fa2V5d29yZFNlbGVjdC52YWx1ZSA9ICJweCI7CisKKyAgICAgICAgdGhpcy5f
dmFsdWVSZWdFeHAgPSAvXigtP1tcZC5dKykoW15cc1xkXXswLDR9KSg/OlxzKjs/KSQvOworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIHZh
ciBlZGl0YWJsZSA9IHRoaXMubnVtYmVySW5wdXRFZGl0YWJsZTsKKyAgICAgICAgaWYgKGVkaXRh
YmxlICYmICF0aGlzLl92YWx1ZU51bWJlcklucHV0LnZhbHVlIHx8ICF0aGlzLl9rZXl3b3JkU2Vs
ZWN0LnZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJldHVybiBlZGl0YWJs
ZSA/IHBhcnNlRmxvYXQodGhpcy5fdmFsdWVOdW1iZXJJbnB1dC52YWx1ZSkgOiB0aGlzLl9rZXl3
b3JkU2VsZWN0LnZhbHVlOworICAgIH0KKworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0gdGhpcy52YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSkgeworICAgICAgICAgICAgdGhpcy5f
Y29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7Cisg
ICAgICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0LnZhbHVlID0gdmFsdWU7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAg
ICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0LnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLnZhbHVlSXNLZXl3b3JkKHZhbHVl
KSkgeworICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
bnVtYmVyLWlucHV0LWVkaXRhYmxlIik7CisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0
LnZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBnZXQgdW5pdHMoKQorICAgIHsKKyAgICAgICAgdmFyIGtleXdvcmQgPSB0aGlzLl9rZXl3
b3JkU2VsZWN0LnZhbHVlOworCisgICAgICAgIGlmICghdGhpcy52YWx1ZUlzVW5pdChrZXl3b3Jk
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICB9
CisKKyAgICBzZXQgdW5pdHModW5pdCkKKyAgICB7CisgICAgICAgIGlmICghdW5pdCB8fCB1bml0
ID09PSB0aGlzLnVuaXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlz
LnZhbHVlSXNVbml0KHVuaXQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0
aGlzLl92YWx1ZUlzQWR2YW5jZWRVbml0KHVuaXQpKQorICAgICAgICAgICAgdGhpcy5fYWRkQWR2
YW5jZWRVbml0cygpOworCisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0
LnZhbHVlID0gdW5pdDsKKworICAgICAgICBpZiAodGhpcy5faGFzVW5pdHMpCisgICAgICAgICAg
ICB0aGlzLl91bml0c0VsZW1lbnQudGV4dENvbnRlbnQgPSB1bml0OworICAgIH0KKworICAgIGdl
dCBwbGFjZWhvbGRlcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVOdW1iZXJJ
bnB1dC5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7CisgICAgfQorCisgICAgc2V0IHBsYWNl
aG9sZGVyKHRleHQpCisgICAgeworICAgICAgICBpZiAodGV4dCA9PT0gdGhpcy5wbGFjZWhvbGRl
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0
LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAoIWlzTmFOKHRleHQpICYmIHRleHQpIHx8IDAp
OworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHZh
ciB2YWx1ZSA9IHRoaXMuX3ZhbHVlTnVtYmVySW5wdXQudmFsdWU7CisgICAgICAgIGlmICh0aGlz
Lm51bWJlcklucHV0RWRpdGFibGUgJiYgIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgdmFyIGtleXdvcmQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0LnZhbHVlOworICAg
ICAgICByZXR1cm4gdGhpcy52YWx1ZUlzVW5pdChrZXl3b3JkKSA/IHZhbHVlICsgKHRoaXMuX2hh
c1VuaXRzID8ga2V5d29yZCA6ICIiKSA6IGtleXdvcmQ7CisgICAgfQorCisgICAgZ2V0IG51bWJl
cklucHV0RWRpdGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRFbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7CisgICAgfQor
CisgICAgc3luY1ZhbHVlKHRleHQsIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNoID0g
dGhpcy5fdmFsdWVSZWdFeHAuZXhlYyh2YWx1ZSk7CisgICAgICAgIHRoaXMudmFsdWUgPSBtYXRj
aCA/IG1hdGNoWzFdIDogdmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSBtYXRjaCA/IG1hdGNo
WzJdIDogbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGV4
dCwgdmFsdWUpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVLZXl3b3Jk
Q2hhbmdlZCgpCisgICAgeworICAgICAgICB2YXIgc3dpdGNoZWRVbml0cyA9IHRoaXMudmFsdWVJ
c1VuaXQodGhpcy5fa2V5d29yZFNlbGVjdC52YWx1ZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLm51
bWJlcklucHV0RWRpdGFibGUgJiYgc3dpdGNoZWRVbml0cykKKyAgICAgICAgICAgIHRoaXMuX3Zh
bHVlTnVtYmVySW5wdXQudmFsdWUgPSBudWxsOworCisgICAgICAgIGlmICh0aGlzLl9oYXNVbml0
cykKKyAgICAgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2tl
eXdvcmRTZWxlY3QudmFsdWU7CisKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NM
aXN0LnRvZ2dsZSgibnVtYmVyLWlucHV0LWVkaXRhYmxlIiwgc3dpdGNoZWRVbml0cyk7CisKKyAg
ICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfdmFsdWVOdW1iZXJJ
bnB1dEtleURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMubnVtYmVySW5wdXRF
ZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIga2V5ID0gZXZlbnQu
a2V5SWRlbnRpZmllcjsKKworICAgICAgICBmdW5jdGlvbiBzaGlmdFZhbHVlKGRpcmVjdGlvbikK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTsKKyAgICAgICAg
ICAgIHZhciBuZXdWYWx1ZTsKKworICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiBpc05hTih2YWx1
ZSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXJWYWx1ZSA9IHRoaXMucGxhY2Vo
b2xkZXIgJiYgIWlzTmFOKHRoaXMucGxhY2Vob2xkZXIpID8gcGFyc2VGbG9hdCh0aGlzLnBsYWNl
aG9sZGVyKSA6IDA7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBwbGFjZWhvbGRlclZhbHVl
ICsgZGlyZWN0aW9uOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbmV3VmFs
dWUgPSB2YWx1ZSArIGRpcmVjdGlvbjsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd05l
Z2F0aXZlVmFsdWVzICYmIG5ld1ZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9
IDA7CisKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSBNYXRoLnJvdW5kKG5ld1ZhbHVlICogMTAw
KSAvIDEwMDsKKworICAgICAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzaGlmdCA9IGV2ZW50LnNoaWZ0
S2V5ID8gMC4xIDogMTsKKworICAgICAgICBpZiAoa2V5ID09PSAiVXAiKSB7CisgICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgc2hpZnRWYWx1ZS5jYWxsKHRo
aXMsIHNoaWZ0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChrZXkgPT09ICJEb3duIikgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIHNoaWZ0VmFsdWUuY2FsbCh0aGlzLCAtc2hpZnQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAg
ICB9CisKKyAgICBfaGFuZGxlTnVtYmVySW5wdXRDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5udW1iZXJJbnB1dEVkaXRhYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX2tleXdvcmRTZWxlY3RN
b3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQorICAgICAg
ICAgICAgdGhpcy5fYWRkQWR2YW5jZWRVbml0cygpOworICAgICAgICBlbHNlIGlmICghdGhpcy5f
dmFsdWVJc0FkdmFuY2VkVW5pdCgpKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWR2YW5jZWRV
bml0cygpOworICAgIH0KKworICAgIF9hZGRWYWx1ZXModmFsdWVzKQorICAgIHsKKyAgICAgICAg
dmFyIGFkZGVkRWxlbWVudHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlcykg
eworICAgICAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlv
biIpOworICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0ga2V5OworICAgICAgICAgICAgb3B0aW9u
LnRleHQgPSB2YWx1ZXNba2V5XTsKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3QuYXBw
ZW5kQ2hpbGQob3B0aW9uKTsKKyAgICAgICAgICAgIGFkZGVkRWxlbWVudHMucHVzaChvcHRpb24p
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFkZGVkRWxlbWVudHM7CisgICAgfQorCisg
ICAgX2FkZFVuaXRzKHVuaXRzKQorICAgIHsKKyAgICAgICAgdmFyIGFkZGVkRWxlbWVudHMgPSBb
XTsKKyAgICAgICAgZm9yICh2YXIgdW5pdCBvZiB1bml0cykgeworICAgICAgICAgICAgdmFyIG9w
dGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICAgICAgb3B0
aW9uLnRleHQgPSB1bml0OworICAgICAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdC5hcHBlbmRD
aGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBf
YWRkQWR2YW5jZWRVbml0cygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fYWR2YW5jZWRVbml0
c0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2tleXdvcmRT
ZWxlY3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKSk7CisgICAgICAg
IHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cyA9IHRoaXMuX2FkZFVuaXRzKHRoaXMuX3Bvc3Np
YmxlVW5pdHMuYWR2YW5jZWQpOworICAgIH0KKworICAgIF9yZW1vdmVBZHZhbmNlZFVuaXRzKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3QucmVtb3ZlQ2hpbGQo
dGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzWzBdLnByZXZpb3VzU2libGluZyk7CisgICAgICAg
IGZvciAodmFyIGVsZW1lbnQgb2YgdGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzKQorICAgICAg
ICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdC5yZW1vdmVDaGlsZChlbGVtZW50KTsKKworICAgICAg
ICB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMgPSBudWxsOworICAgIH0KKworICAgIF9mb2N1
c0NvbnRlbnRFbGVtZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZm9jdXNlZCIpOworICAgIH0KKworICAgIF9ibHVyQ29udGVudEVs
ZW1lbnQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJmb2N1c2VkIik7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5l
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kMDg0YTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzCkBAIC0wLDAgKzEs
MTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21i
aW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RWRp
dG9ycykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBu
dWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAg
IHRoaXMuX3Byb3BlcnR5RWRpdG9ycyA9IHByb3BlcnR5RWRpdG9ycyB8fCBbXTsKKyAgICAgICAg
dGhpcy5fcHJvcGVydHlNaXNzaW5nID0gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgZWRpdG9y
IG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFs
dWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkLmJpbmQo
dGhpcykpOworICAgICAgICAgICAgZWRpdG9yLmRvbnRVcGRhdGVTdHlsZVRleHQgPSB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4cCA9IG5ldyBS
ZWdFeHAoIig/Oig/Ol58OylcXHMqIiArIHRoaXMuX3Byb3BlcnR5TmFtZSArICJcXHMqOikiKTsK
KyAgICAgICAgdGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCIoXnw7KSg/Olxc
cyopKCIgKyB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiKSguKz8oPzo7fCQpKSIpOworICAgICAgICB0
aGlzLl92YWx1ZVJlZ0V4cCA9IC8oW15cc10rXCguK1wpfFteXHNdKykoPzo7PykvZzsKKyAgICB9
CisKKyAgICBnZXQgc3R5bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlOwor
ICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHZhciB2
YWx1ZSA9ICIiOworICAgICAgICB2YXIgb25lRWRpdG9ySGFzVmFsdWUgPSBmYWxzZTsKKworICAg
ICAgICBmb3IgKHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAg
ICAgICB2YXIgZWRpdG9yVmFsdWUgPSBlZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKworICAgICAg
ICAgICAgaWYgKGVkaXRvclZhbHVlICYmIGVkaXRvclZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICBvbmVFZGl0b3JIYXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChlZGl0
b3Iub3B0aW9uYWxQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgaWYgKGVkaXRvci5tYXN0ZXJQcm9wZXJ0eSAmJiBlZGl0b3IudmFsdWVJc0tleXdvcmQo
KSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21hcmtFZGl0b3JzKGVkaXRvciwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclZhbHVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoZWRpdG9yICE9PSB0aGlzLl9wcm9wZXJ0eUVkaXRvcnNbMF0pCisgICAgICAg
ICAgICAgICAgdmFsdWUgKz0gIiAiOworCisgICAgICAgICAgICB2YWx1ZSArPSBlZGl0b3JWYWx1
ZSB8fCAoZWRpdG9yLmNvbG9yUHJvcGVydHkgPyAidHJhbnNwYXJlbnQiIDogMCk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl9tYXJrRWRpdG9ycygpOworICAgICAgICByZXR1cm4gdmFsdWUu
bGVuZ3RoICYmIG9uZUVkaXRvckhhc1ZhbHVlID8gdmFsdWUgOiBudWxsOworICAgIH0KKworICAg
IG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciB0cmlt
bWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3RleHRDb250
YWluc05hbWVSZWdFeHAudGVzdCh0ZXh0KSkKKyAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxh
Y2UodGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAsIHZhbHVlID8gIiQxJDI6ICIgKyB2YWx1ZSArICI7
IiA6ICIkMSIpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgaWYgKHRy
aW1tZWRUZXh0LnRyaW1MZWZ0KCkubGVuZ3RoICYmICF0cmltbWVkVGV4dC5lbmRzV2l0aCgiOyIp
KQorICAgICAgICAgICAgICAgIHRleHQgKz0gIjsiOworCisgICAgICAgICAgICB0ZXh0ICs9IHRo
aXMuX3Byb3BlcnR5TmFtZSArICI6ICIgKyB2YWx1ZSArICI7IjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7CisgICAgICAgICAgICB0aGlzLl9pZ25v
cmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZSA9IHN0eWxlOworCisg
ICAgICAgIGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnByb3BlcnR5
Rm9yTmFtZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAgICAgICB2YXIgcHJvcGVydHlN
aXNzaW5nID0gIXByb3BlcnR5OworCisgICAgICAgIGlmIChwcm9wZXJ0eU1pc3NpbmcgJiYgdGhp
cy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgIHByb3BlcnR5ID0gdGhpcy5fc3R5bGUu
bm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnByb3BlcnR5Rm9yTmFtZSh0aGlzLl9wcm9wZXJ0eU5h
bWUpOworCisgICAgICAgIGlmICghcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy51cGRhdGVWYWx1ZXNGcm9tVGV4dChwcm9wZXJ0eS52YWx1ZSwgc3R5bGUsIHBy
b3BlcnR5TWlzc2luZyk7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IHByb3BlcnR5
TWlzc2luZzsKKyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9tVGV4dChzdHlsZVRleHQsIG5l
d1N0eWxlLCBwcm9wZXJ0eU1pc3NpbmcpCisgICAgeworICAgICAgICBpZiAoc3R5bGVUZXh0ID09
PSB0aGlzLnN5bnRoZXNpemVkVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Zm9yICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykKKyAgICAgICAgICAgIGVk
aXRvci5fX3VwZGF0ZWQgPSBmYWxzZTsKKworICAgICAgICBmdW5jdGlvbiB1cGRhdGVDb21wYXRp
YmxlRWRpdG9yKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBlZGl0b3Ig
b2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYm
ICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVkaXRvci5fX3VwZGF0ZWQpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2N1cnJlbnRWYWx1ZUlzS2V5d29yZCAmJiBlZGl0b3IuZGlzYWJsZWQpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmFyIHVwZGF0ZWRWYWx1ZXMgPSBl
ZGl0b3IuZ2V0VmFsdWVzRnJvbVRleHQodmFsdWUgfHwgIiIsIHByb3BlcnR5TWlzc2luZyk7Cisg
ICAgICAgICAgICAgICAgZWRpdG9yLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsK
KyAgICAgICAgICAgICAgICBlZGl0b3IuX191cGRhdGVkID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoZXMgPSBzdHlsZVRleHQubWF0Y2godGhp
cy5fdmFsdWVSZWdFeHApOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Byb3Bl
cnR5RWRpdG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHVwZGF0ZUNvbXBhdGlibGVFZGl0
b3IuY2FsbCh0aGlzLCBtYXRjaGVzICYmIG1hdGNoZXNbaV0pOworICAgIH0KKworICAgIGdldCBw
cm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5TWlz
c2luZzsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWFya0VkaXRvcnMoaWdub3Jl
ZEVkaXRvciwgZGlzYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVJc0tl
eXdvcmQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBlZGl0b3Igb2Yg
dGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBpZiAoaWdub3JlZEVkaXRvciAm
JiBlZGl0b3IgPT09IGlnbm9yZWRFZGl0b3IpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGVkaXRvci5kaXNhYmxlZCA9IHRoaXMuX2N1cnJlbnRWYWx1ZUlzS2V5d29y
ZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVlQ2hh
bmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gdHJ1ZTsKKwor
ICAgICAgICBpZiAodGhpcy5fc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZS50ZXh0ID0g
dGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGhpcy5fc3R5bGUudGV4dCwgdGhpcy5zeW50aGVzaXpl
ZFZhbHVlKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSk7Cisg
ICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRhMzcxMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IuY3NzCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBtaW4taGVpZ2h0OiAyMnB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgeworICAgIG1hcmdp
bjogNHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiAucHJvcGVydHkt
cmVmZXJlbmNlLWluZm97CisgICAgY3Vyc29yOiBoZWxwOworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUg
PiA6bm90KC5wcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbykgeworICAgIG9wYWNpdHk6IDAuNDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAgZmxleDogMTsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgeworICAgIHBvaW50ZXItZXZlbnRz
OiBub25lOworICAgIG9wYWNpdHk6IDAuNDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBzZWxlY3Qg
eworICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdpbjogMXB4IDA7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgaW5wdXQgeworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxcHgpOworICAgIG1hcmdpbjog
MDsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlu
cHV0IHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5sYXlvdXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXRpdGxlIHsKKyAgICBvcmRlcjogMjsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0Owor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBs
YWNlaG9sZGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAycHg7CisgICAg
bGVmdDogMXB4OworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4KTsKKyAgICBsaW5lLWhlaWdo
dDogMTZweDsKKyAgICB0ZXh0LWluZGVudDogN3B4OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBjb2xvcjogZ3JleTsKKyAgICBwb2lu
dGVyLWV2ZW50czogbm9uZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNl
OiBub3dyYXA7CisgICAgei1pbmRleDogMTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1p
bmZvLXBvcG92ZXIgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBtYXJnaW46IDA7CisgICAgcGFk
ZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIgPiBoMyB7
CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM5MDBhNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKQEAgLTAsMCArMSw0NDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvciA9IGNsYXNzIFZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7Cisg
ICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgbGFiZWwsIHBvc3NpYmxlVmFsdWVzLCBwb3Nz
aWJsZVVuaXRzLCBjbGFzc05hbWUsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0ID0gW107CisgICAgICAgIHRo
aXMuX3N0eWxlID0gbnVsbDsKKworICAgICAgICBmdW5jdGlvbiBwYXJzZVZhbHVlcyh2YWx1ZXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghdmFsdWVzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgdmFyIHBhcnNlZFZhbHVlcyA9IHt9OworICAgICAgICAgICAg
Zm9yICh2YXIgdmFsdWUgb2YgdmFsdWVzKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1t2
YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAg
ICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9w
b3NzaWJsZVZhbHVlcyA9IG51bGw7CisgICAgICAgIGlmIChwb3NzaWJsZVZhbHVlcykgeworICAg
ICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMgPSB7fTsKKyAgICAgICAgICAgIGlmIChBcnJh
eS5pc0FycmF5KHBvc3NpYmxlVmFsdWVzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJs
ZVZhbHVlcy5iYXNpYyA9IHBhcnNlVmFsdWVzKHBvc3NpYmxlVmFsdWVzKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gcGFy
c2VWYWx1ZXMocG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAgICAgICAgIHRoaXMuX3Bv
c3NpYmxlVmFsdWVzLmFkdmFuY2VkID0gcGFyc2VWYWx1ZXMocG9zc2libGVWYWx1ZXMuYWR2YW5j
ZWQpOworICAgICAgICAgICAgfSAKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9wb3NzaWJsZVVu
aXRzID0gbnVsbDsKKyAgICAgICAgaWYgKHBvc3NpYmxlVW5pdHMpIHsKKyAgICAgICAgICAgIHRo
aXMuX3Bvc3NpYmxlVW5pdHMgPSB7fTsKKyAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBv
c3NpYmxlVW5pdHMpKQorICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMg
PSBwb3NzaWJsZVVuaXRzOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMu
X3Bvc3NpYmxlVW5pdHMgPSBwb3NzaWJsZVVuaXRzCisgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciIs
IGNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibGF5
b3V0LXJldmVyc2VkIiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIGlmIChsYWJlbCAmJiBs
YWJlbC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZUNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGl0bGVDb250YWluZXIuY2xhc3NM
aXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIik7CisKKyAgICAgICAgICAgIHRo
aXMuX3RpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAg
ICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShsYWJlbCkpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX3RpdGxlRWxlbWVudE1vdXNlT3Zlci5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW91dCIsIHRoaXMuX3RpdGxlRWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOworICAgICAgICAg
ICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdGl0
bGVFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aXRsZUNvbnRhaW5lci5h
cHBlbmRDaGlsZCh0aGlzLl90aXRsZUVsZW1lbnQpOworCisgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRpdGxlQ29udGFpbmVyKTsKKworICAgICAgICAgICAgdGhpcy5fYm91
bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2sgPSB0aGlzLl90aXRsZUVsZW1lbnRQcmVwYXJl
Rm9yQ2xpY2suYmluZCh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2NvbnRlbnRF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIiKTsKKworICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fc3BlY2lhbFBy
b3BlcnR5UGxhY2Vob2xkZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJv
cGVydHktcGxhY2Vob2xkZXIiKTsKKyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vo
b2xkZXIuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIpOworCisgICAgICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRo
aXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fdmFsdWVSZWdFeHAgPSBudWxsOworCisgICAgICAgIGlmICh0eXBlb2Yg
cHJvcGVydHlOYW1lcyA9PT0gInN0cmluZyIpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzID0g
W3Byb3BlcnR5TmFtZXNdOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoIm11bHRpcGxlIik7CisKKyAgICAgICAgZm9yICh2YXIgbmFtZSBvZiBw
cm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
bmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0LnB1c2goeworICAgICAg
ICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgdGV4dENvbnRhaW5zTmFtZVJlZ0V4cDog
bmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgbmFtZSArICJcXHMqOikiKSwKKyAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudFJlZ0V4cDogbmV3IFJlZ0V4cCgiKF58OykoPzpcXHMqKSgiICsg
bmFtZSArICIpKC4rPyg/Ojt8JCkpIikKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBwcm9wZXJ0eU5hbWVzWzBdOworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBzZXQg
dmFsdWUodmFsdWUpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcwor
ICAgIH0KKworICAgIGdldCB1bml0cygpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzcworICAgIH0KKworICAgIHNldCB1bml0cyh1bml0KQorICAgIHsKKyAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBnZXQgcGxhY2Vob2xkZXIo
KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAg
ICBzZXQgcGxhY2Vob2xkZXIodGV4dCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzCisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBzZXQgZG9udFVw
ZGF0ZVN0eWxlVGV4dChmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fZG9udFVwZGF0ZVN0eWxl
VGV4dCA9IGZsYWc7CisgICAgfQorCisgICAgc2V0IG1hc3RlclByb3BlcnR5KGZsYWcpCisgICAg
eworICAgICAgICB0aGlzLl9tYXN0ZXJQcm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0
IG1hc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXN0ZXJQcm9w
ZXJ0eTsKKyAgICB9CisKKyAgICBzZXQgb3B0aW9uYWxQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fb3B0aW9uYWxQcm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG9w
dGlvbmFsUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbmFsUHJv
cGVydHk7CisgICAgfQorCisgICAgc2V0IGNvbG9yUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAg
ICAgIHRoaXMuX2NvbG9yUHJvcGVydHkgPSBmbGFnOworICAgIH0KKworICAgIGdldCBjb2xvclBy
b3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2xvclByb3BlcnR5OworICAg
IH0KKworICAgIGdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZTsKKyAgICB9CisKKyAgICBzZXQgcHJvcGVy
dHlSZWZlcmVuY2VOYW1lKG5hbWUpCisgICAgeworICAgICAgICBpZiAoIW5hbWUgfHwgIW5hbWUu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5UmVm
ZXJlbmNlTmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAg
eworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgZmxh
Zyk7CisgICAgICAgIC8vIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSBmbGFnID8gLTEgOiBudWxs
OworICAgIH0KKworICAgIGdldCBkaXNhYmxlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImRpc2FibGVkIik7CisgICAgfQorCisgICAg
dXBkYXRlKHN0eWxlKQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhp
cy5fc3R5bGUgPSBzdHlsZTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5faWdub3JlTmV4dFVwZGF0
ZSkgeworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZSB8fCAh
dGhpcy5fdmFsdWVSZWdFeHApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
dXBkYXRlZFZhbHVlcyA9IHt9OworICAgICAgICB2YXIgY29uZmxpY3RpbmdWYWx1ZXMgPSBmYWxz
ZTsKKyAgICAgICAgdmFyIHByb3BlcnR5TWlzc2luZyA9IGZhbHNlOworCisgICAgICAgIGZvciAo
dmFyIHByb3BlcnR5SW5mbyBvZiB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0KSB7CisgICAgICAgICAg
ICB2YXIgcHJvcGVydHkgPSB0aGlzLl9zdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZv
Lm5hbWUsIHRydWUpOworICAgICAgICAgICAgcHJvcGVydHlNaXNzaW5nID0gIXByb3BlcnR5Owor
CisgICAgICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nICYmIHRoaXMuX3N0eWxlLm5vZGVTdHls
ZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHkgPSB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzLmNv
bXB1dGVkU3R5bGUucHJvcGVydHlGb3JOYW1lKHByb3BlcnR5SW5mby5uYW1lKTsKKworICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgdmFyIHNob3J0aGFuZCA9IHByb3BlcnR5LnJlbGF0ZWRTaG9ydGhhbmRQcm9wZXJ0eTsK
KyAgICAgICAgICAgIGlmICghcHJvcGVydHlNaXNzaW5nICYmIHByb3BlcnR5LmFub255bW91cyAm
JiBzaG9ydGhhbmQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGV4dCA9ICIiOworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGxvbmdoYW5kIG9mIHNob3J0aGFuZC5yZWxhdGVkTG9uZ2hhbmRQcm9w
ZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbG9uZ2hhbmQuYW5vbnltb3VzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAg
dGV4dCArPSBsb25naGFuZC5zeW50aGVzaXplZFRleHQ7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKCF0ZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS50ZXh0ID0gdGhpcy5fc3R5bGUudGV4
dC5yZXBsYWNlKHNob3J0aGFuZC50ZXh0LCB0ZXh0KTsKKyAgICAgICAgICAgIH0KKworCisgICAg
ICAgICAgICB2YXIgbmV3VmFsdWVzID0gdGhpcy5nZXRWYWx1ZXNGcm9tVGV4dChwcm9wZXJ0eS52
YWx1ZSwgcHJvcGVydHlNaXNzaW5nKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRW
YWx1ZXMucGxhY2Vob2xkZXIgJiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAhPT0g
bmV3VmFsdWVzLnBsYWNlaG9sZGVyKQorICAgICAgICAgICAgICAgIGNvbmZsaWN0aW5nVmFsdWVz
ID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9s
ZGVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSBuZXdWYWx1ZXM7CisK
KyAgICAgICAgICAgIGlmIChjb25mbGljdGluZ1ZhbHVlcykgeworICAgICAgICAgICAgICAgIHRo
aXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLnRleHRDb250ZW50ID0gIigiICsgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJtdWx0aXBsZSIpICsgIikiOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJtdWx0aXBsZSIpKQorICAgICAgICAgICAgdGhpcy5fc3BlY2lh
bFByb3BlcnR5UGxhY2Vob2xkZXIuaGlkZGVuID0gIWNvbmZsaWN0aW5nVmFsdWVzOworCisgICAg
ICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3VwZGF0ZWRWYWx1ZXMpOworICAgIH0K
KworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKQorICAgIHsKKyAgICAgICAg
dGhpcy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSB1
cGRhdGVkVmFsdWVzLnVuaXRzOworICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdXBkYXRlZFZh
bHVlcy5wbGFjZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aGlzLnN5bnRo
ZXNpemVkVmFsdWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4dCwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgdHJp
bW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdodCgpOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5
IG9mIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50
ZXh0Q29udGFpbnNOYW1lUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAgICAgICAgICAgdGV4dCA9
IHRleHQucmVwbGFjZShwcm9wZXJ0eS5yZXBsYWNlbWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwg
PyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAgICAgICAgICBlbHNlIGlmICh2
YWx1ZSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVm
dCgpLmxlbmd0aCAmJiAhdHJpbW1lZFRleHQuZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5h
bWUgKyAiOiAiICsgdmFsdWUgKyAiOyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gdGV4dDsKKyAgICB9CisKKyAgICBnZXRWYWx1ZXNGcm9tVGV4dCh0ZXh0LCBw
cm9wZXJ0eU1pc3NpbmcpCisgICAgeworICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLl92YWx1ZVJl
Z0V4cC5leGVjKHRleHQpOworICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBtYXRjaCA/IG1hdGNo
WzFdIDogdGV4dDsKKyAgICAgICAgdmFyIHZhbHVlID0gIXByb3BlcnR5TWlzc2luZyA/IHBsYWNl
aG9sZGVyIDogKHRoaXMudmFsdWVJc0tleXdvcmQodGV4dCkgPyB0ZXh0IDogbnVsbCk7CisgICAg
ICAgIHZhciB1bml0cyA9IG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOworCisgICAgICAgIHJldHVy
biB7dmFsdWUsIHVuaXRzLCBwbGFjZWhvbGRlciwgcHJvcGVydHlNaXNzaW5nfTsKKyAgICB9CisK
KyAgICBnZXQgcHJvcGVydHlNaXNzaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91
cGRhdGVkVmFsdWVzICYmIHRoaXMuX3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNzaW5nOworICAg
IH0KKworICAgIHZhbHVlSXNDb21wYXRpYmxlKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHZhbHVlICYmICh0aGlzLl92YWx1ZVJlZ0V4cCAmJiB0aGlzLl92YWx1ZVJlZ0V4cC50ZXN0KHZh
bHVlKSB8fCB0aGlzLnZhbHVlSXNLZXl3b3JkKHZhbHVlKSk7CisgICAgfQorCisgICAgdmFsdWVJ
c0tleXdvcmQodmFsdWUpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHRoaXMu
dmFsdWU7CisgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNp
YykuaW5jbHVkZXModmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQodmFsdWUpOworICAgIH0KKworICAg
IHZhbHVlSXNVbml0KHVuaXQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVW5p
dHMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwg
dGhpcy51bml0czsKKyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMuaW5jbHVk
ZXModW5pdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhp
cy5fdmFsdWVJc0FkdmFuY2VkVW5pdCh1bml0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfdmFsdWVJc0FkdmFuY2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9wb3Nz
aWJsZVZhbHVlcy5hZHZhbmNlZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7CisgICAg
fQorCisgICAgX3ZhbHVlSXNBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2
YW5jZWQuaW5jbHVkZXModW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9CisKKyAgICBfa2V5Rm9y
S2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMuX3Bvc3Np
YmxlVmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljW3ZhbHVlXSB8fCAodGhpcy5fcG9zc2libGVWYWx1ZXMu
YWR2YW5jZWQgJiYgdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWRbdmFsdWVdKSB8fCBudWxs
OworICAgIH0KKworICAgIF92YWx1ZURpZENoYW5nZSgpCisgICAgeworICAgICAgICB2YXIgdmFs
dWUgPSB0aGlzLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5f
bGFzdFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlz
Ll9zdHlsZSAmJiAhdGhpcy5fZG9udFVwZGF0ZVN0eWxlVGV4dCkgeworICAgICAgICAgICAgdmFy
IG5ld1RleHQgPSB0aGlzLm1vZGlmeVByb3BlcnR5VGV4dCh0aGlzLl9zdHlsZS50ZXh0LCB2YWx1
ZSk7CisgICAgICAgICAgICB0aGlzLl9zdHlsZS50ZXh0ID0gbmV3VGV4dDsKKworICAgICAgICAg
ICAgaWYgKCFuZXdUZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS51cGRh
dGUobnVsbCwgbnVsbCwgdGhpcy5fc3R5bGUuc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdu
b3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNl
aG9sZGVyLmhpZGRlbiA9IHRydWU7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVE
aWRDaGFuZ2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVt
ZW50UHJlcGFyZUZvckNsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoInByb3BlcnR5LXJlZmVyZW5jZS1pbmZvIiwgZXZlbnQudHlw
ZSA9PT0gImtleWRvd24iICYmIGV2ZW50LmFsdEtleSk7CisgICAgfQorCisgICAgX3RpdGxlRWxl
bWVudE1vdXNlT3ZlcihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LmFsdEtleSk7
CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3Vu
ZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2sp
OworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRNb3VzZU91dCgpCisgICAgeworICAgICAgICB0
aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgicHJvcGVydHktcmVmZXJlbmNlLWlu
Zm8iKTsKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRo
aXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsKKyAgICAgICAgZG9jdW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBh
cmVGb3JDbGljayk7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudENsaWNrKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX3Nob3dQcm9w
ZXJ0eUluZm9Qb3BvdmVyKCk7CisgICAgfQorCisgICAgX2hhc011bHRpcGxlQ29uZmxpY3RpbmdW
YWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJtdWx0aXBsZSIpICYmICF0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlci5o
aWRkZW47CisgICAgfQorCisgICAgX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7Cisg
ICAgICAgIHZhciBwcm9wZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
cCIpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIiKTsKKworICAgICAgICB2YXIgcHJvcGVydHlJbmZv
VGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJv
cGVydHlJbmZvVGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJv
cGVydHlJbmZvRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3Ro
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZV0pKTsKKworICAgICAgICB2YXIgYm91bmRzID0gV2Vi
SW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIHZhciBwb3BvdmVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyKHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUlu
Zm9FbGVtZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYklu
c3BlY3Rvci5SZWN0RWRnZS5NSU5fWV0pOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50ID0geworICAgIFZhbHVlRGlkQ2hhbmdlOiAidmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci12YWx1ZS1jaGFuZ2VkIgorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFjMGZjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
TGluay5jc3MKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktZWRpdG9yLWxpbmsgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBtaW4td2lk
dGg6IDMycHg7CisgICAgbWFyZ2luLWxlZnQ6IDFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItbGluay5kaXNhYmxlZCB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsIHsKKyAgICBoZWln
aHQ6IDEycHg7CisgICAgbWFyZ2luOiAwIGF1dG8gMXB4OworICAgIHBhZGRpbmc6IDAgNTBweDsK
KyAgICBib3JkZXItdG9wLXdpZHRoOiAwOworICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4Owor
ICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CisgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsK
KyAgICBib3JkZXItY29sb3I6IGdyZXk7CisgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsuc3luY2VkLmxpbmstYWxsIHsKKyAg
ICBib3JkZXItY29sb3I6IGJsYWNrOworICAgIGJvcmRlci1zdHlsZTogc29saWQ7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
LXdlYmtpdC1jYWxjKDUwJSAtIDAuNXB4KTsKKyAgICB3aWR0aDogNDhweDsKKyAgICBib3JkZXIt
dG9wOiAxcHggZGFzaGVkIGdyZXk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmsubGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRl
ci5sZWZ0IHsKKyAgICB3aWR0aDogNDlweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay5zeW5jZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJv
cmRlciB7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluay1ib3JkZXIubGVmdCB7CisgICAgbGVmdDogMXB4OworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1i
b3JkZXIucmlnaHQgeworICAgIHJpZ2h0OiAxcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmsubGluay1hbGwuc3luY2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1ib3JkZXIubGVmdCB7CisgICAgbGVmdDogMDsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5zeW5jZWQgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgcmlnaHQ6IDA7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgd2lkdGg6IDlweDsKKyAg
ICB0b3A6IC13ZWJraXQtY2FsYyg1MCUgLSAxcHgpOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29u
IHsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDEwcHg7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWljb24geworICAgIG1hcmdpbjogNXB4IDAgMCAxMXB4OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmU4Zjc4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsuanMKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsgPSBjbGFzcyBWaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yTGluayBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcihsaW5rZWRQcm9wZXJ0aWVzLCBjbGFzc05hbWUsIGxpbmtzVG9IaWRlV2hlblN5bmNl
ZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fbGlua2VkUHJvcGVy
dGllcyA9IGxpbmtlZFByb3BlcnRpZXMgfHwgW107CisgICAgICAgIHRoaXMuX2xpbmtzVG9IaWRl
V2hlblN5bmNlZCA9IGxpbmtzVG9IaWRlV2hlblN5bmNlZCB8fCBbXTsKKyAgICAgICAgdGhpcy5f
bGFzdFByb3BlcnR5RWRpdGVkID0gbnVsbDsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBv
ZiB0aGlzLl9saW5rZWRQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcHJvcGVydHkuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5WYWx1
ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlU3luY2VkUHJvcGVydHlWYWx1ZUNoYW5nZWQsIHRoaXMp
OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJv
cGVydHktZWRpdG9yLWxpbmsiLCBjbGFzc05hbWUgfHwgIiIpOworCisgICAgICAgIHZhciBsZWZ0
TGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsZWZ0TGluZS5j
bGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIiwg
ImxlZnQiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0TGluZSk7CisK
KyAgICAgICAgdGhpcy5faWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICB0aGlzLl9pY29uLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItbGluay1pY29uIik7CisgICAgICAgIHRoaXMuX2ljb24uYWRkRXZlbnRMaXN0ZW5lcigibW91
c2VvdmVyIiwgdGhpcy5faGFuZGxlSWNvbk1vdXNlb3Zlci5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5faWNvbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZUljb25N
b3VzZW91dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faWNvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2hhbmRsZUljb25DbGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAg
IC8vIFRPRE86IFJlcGxhY2UgIkNsb3NlIiB3aXRoIGFuIGljb24gb2YgYSBicm9rZW4gbGluay4K
KyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvQ2xvc2Uuc3ZnIiwgbnVsbCwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBsaW5rLiIpLCBmdW5jdGlvbih3cmFwcGVyKSB7
CisgICAgICAgICAgICB0aGlzLl9pY29uLmFwcGVuZENoaWxkKHdyYXBwZXIpOworICAgICAgICAg
ICAgdGhpcy5fc2VwYXJhdGVJY29uID0gd3JhcHBlcjsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsK
KworICAgICAgICAvLyBUT0RPOiBSZXBsYWNlICJQbHVzIiB3aXRoIGFuIGljb24gb2YgYSB1bmJy
b2tlbiBsaW5rLgorICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdlcy9QbHVzLnN2ZyIs
IG51bGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gcmVtb3ZlIGxpbmsuIiksIGZ1
bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ljb24uYXBwZW5kQ2hpbGQod3Jh
cHBlcik7CisgICAgICAgICAgICB0aGlzLl9zeW5jZWRJY29uID0gd3JhcHBlcjsKKyAgICAgICAg
ICAgIHRoaXMuX3N5bmNlZEljb24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgfS5iaW5kKHRoaXMp
KTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb24pOworCisg
ICAgICAgIHZhciByaWdodExpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgcmlnaHRMaW5lLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItbGluay1ib3JkZXIiLCAicmlnaHQiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChyaWdodExpbmUpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1l
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAg
Z2V0IHN5bmNlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoInN5bmNlZCIpOworICAgIH0KKworICAgIGdldCBkaXNhYmxlZCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImRpc2Fi
bGVkIik7CisgICAgfQorCisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgZmxhZyk7CisgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX2hhbmRsZVN5bmNlZFByb3BlcnR5VmFsdWVDaGFuZ2Vk
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgcHJvcGVydHkgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmICghcHJv
cGVydHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbGFzdFByb3BlcnR5
RWRpdGVkID0gcHJvcGVydHk7CisgICAgICAgIGlmICghdGhpcy5zeW5jZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3luY1ZhbHVlKHByb3BlcnR5KTsKKyAgICB9CisK
KyAgICBfc3luY1ZhbHVlKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxlID0gcHJv
cGVydHkuc3R5bGU7CisgICAgICAgIHZhciB0ZXh0ID0gc3R5bGUudGV4dDsKKyAgICAgICAgdmFy
IHZhbHVlID0gcHJvcGVydHkuc3ludGhlc2l6ZWRWYWx1ZSB8fCBudWxsOworCisgICAgICAgIGZv
ciAodmFyIGxpbmtlZFByb3BlcnR5IG9mIHRoaXMuX2xpbmtlZFByb3BlcnRpZXMpCisgICAgICAg
ICAgICB0ZXh0ID0gbGlua2VkUHJvcGVydHkuc3luY1ZhbHVlKHRleHQsIHZhbHVlKTsKKworICAg
ICAgICBzdHlsZS50ZXh0ID0gdGV4dDsKKyAgICB9CisKKyAgICBfaGFuZGxlSWNvbk1vdXNlb3Zl
cigpCisgICAgeworICAgICAgICB2YXIgc3luY2VkID0gdGhpcy5zeW5jZWQ7CisgICAgICAgIHRo
aXMuX3N5bmNlZEljb24uaGlkZGVuID0gc3luY2VkOworICAgICAgICB0aGlzLl9zZXBhcmF0ZUlj
b24uaGlkZGVuID0gIXN5bmNlZDsKKyAgICB9CisKKyAgICBfaGFuZGxlSWNvbk1vdXNlb3V0KCkK
KyAgICB7CisgICAgICAgIHZhciBzeW5jZWQgPSB0aGlzLnN5bmNlZDsKKyAgICAgICAgdGhpcy5f
c3luY2VkSWNvbi5oaWRkZW4gPSAhc3luY2VkOworICAgICAgICB0aGlzLl9zZXBhcmF0ZUljb24u
aGlkZGVuID0gc3luY2VkOworICAgIH0KKworICAgIF9oYW5kbGVJY29uQ2xpY2tlZCgpCisgICAg
eworICAgICAgICB2YXIgc3luY2VkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJz
eW5jZWQiKTsKKyAgICAgICAgdGhpcy5fc3luY2VkSWNvbi5oaWRkZW4gPSAhc3luY2VkOworICAg
ICAgICB0aGlzLl9zZXBhcmF0ZUljb24uaGlkZGVuID0gc3luY2VkOworCisgICAgICAgIHRoaXMu
X3N5bmNWYWx1ZSh0aGlzLl9sYXN0UHJvcGVydHlFZGl0ZWQgfHwgdGhpcy5fbGlua2VkUHJvcGVy
dGllc1swXSk7CisgICAgICAgIGZvciAodmFyIGxpbmtUb0hpZGUgb2YgdGhpcy5fbGlua3NUb0hp
ZGVXaGVuU3luY2VkKQorICAgICAgICAgICAgbGlua1RvSGlkZS5kaXNhYmxlZCA9IHN5bmNlZDsK
KyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1dC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU1MTVjZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5TmFtZUlucHV0LmpzCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQgPSBjbGFzcyBWaXN1
YWxTdHlsZVByb3BlcnR5TmFtZUlucHV0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBs
YXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQs
IG51bGwsIG51bGwsICJwcm9wZXJ0eS1uYW1lLWlucHV0IiwgbGF5b3V0UmV2ZXJzZWQpOworCisg
ICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lSW5wdXQucGxhY2Vob2xkZXIgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVudGVyIGEgbmFtZS4iKTsKKyAgICAgICAgdGhpcy5fcHJv
cGVydHlOYW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2lucHV0S2V5
RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lSW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl9pbnB1dEtleVVwLmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl9wcm9wZXJ0eU5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5f
aGlkZUNvbXBsZXRpb25zLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9wcm9wZXJ0eU5hbWVJbnB1dCk7CisKKyAgICAgICAgdGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxl
dGlvbnNDb250cm9sbGVyKHRoaXMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29u
dHJvbGxlci5FdmVudC5Db21wbGV0aW9uU2VsZWN0ZWQsIHRoaXMuX2NvbXBsZXRpb25DbGlja2Vk
LCB0aGlzKTsKKworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC9eKFteO10rKVxzKjs/JC87
CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZUlucHV0LnZhbHVlOworICAgIH0KKworICAgIHNl
dCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0gdGhp
cy52YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5h
bWVJbnB1dC52YWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlIHx8IG51bGw7CisgICAgfQorCisg
ICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb21w
bGV0aW9uQ29udHJvbGxlci5oYXNDb21wbGV0aW9uczsKKyAgICB9CisKKyAgICBzZXQgY29tcGxl
dGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJv
bGxlci5jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOworICAgIH0KKworICAgIC8vIFByaXZhdGUK
KworICAgIF9jb21wbGV0aW9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFs
dWUgPSBldmVudC5kYXRhLnRleHQ7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7Cisg
ICAgfQorCisgICAgX2lucHV0S2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fY29tcGxldGlvbkNvbnRyb2xsZXIudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7CisgICAgICAgIGlmIChrZXlDb2Rl
ID09PSA5IHx8IGtleUNvZGUgPT09IDEzKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhp
cy5fY29tcGxldGlvbkNvbnRyb2xsZXIuY3VycmVudENvbXBsZXRpb247CisgICAgICAgICAgICB0
aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdl
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5Q29k
ZSA9PT0gMjcpIHsKKyAgICAgICAgICAgIHRoaXMuX2hpZGVDb21wbGV0aW9ucygpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGtleSA9IGV2ZW50LmtleUlk
ZW50aWZpZXI7CisgICAgICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAgICAgIHRoaXMu
X2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIF9pbnB1dEtleVVwKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5oYXNDb21wbGV0aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIg
cmVzdWx0ID0gdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Db250cm9s
bGVyLnVwZGF0ZSh0aGlzLnZhbHVlKSkgeworICAgICAgICAgICAgdmFyIGJvdW5kcyA9IFdlYklu
c3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9wcm9wZXJ0eU5hbWVJbnB1dC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgICAgICBpZiAoIWJvdW5kcykKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9s
bGVyLnNob3coYm91bmRzLCAyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oaWRlQ29tcGxl
dGlvbnMoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuaGlkZSgp
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1i
ZXJTbGlkZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMTcyNzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcwpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlu
cHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10
aXRsZSB7CisgICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBvcmRlcjogMjsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxh
dGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFibGUpICsgLnJlbGF0aXZlLXNsaWRlciwKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVt
YmVyLXNsaWRlci5kaXNhYmxlZCA+IC5yZWxhdGl2ZS1zbGlkZXIgeworICAgIG9wYWNpdHk6IDAu
NTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIubm8tdmFsdWVzLm5vLXVuaXRzIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAucmVsYXRpdmUtc2xp
ZGVyIHsKKyAgICB3aWR0aDogNDclOworICAgIG1hcmdpbi1yaWdodDogN3B4OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ3NmE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRp
dmVOdW1iZXJTbGlkZXIuanMKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyID0gY2xhc3MgVmlzdWFsU3R5bGVS
ZWxhdGl2ZU51bWJlclNsaWRlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2li
bGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFsbG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVy
c2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVW
YWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFsbG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2Vk
KTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbGF0aXZlLW51bWJl
ci1zbGlkZXIiKTsKKworICAgICAgICB0aGlzLl9zbGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOworICAgICAgICB0aGlzLl9zbGlkZXIuY2xhc3NMaXN0LmFkZCgicmVsYXRp
dmUtc2xpZGVyIik7CisgICAgICAgIHRoaXMuX3NsaWRlci50eXBlID0gInJhbmdlIjsKKyAgICAg
ICAgdGhpcy5fc2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5faGFuZGxlU2xp
ZGVyQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9zbGlkZXIpOworCisgICAgICAgIHRoaXMuX3N0YXJ0aW5nVmFsdWUgPSBudWxsOwor
ICAgICAgICB0aGlzLl9zY2FsZSA9IDEwMDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAg
IHNldCBzY2FsZShzY2FsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjYWxlID0gc2NhbGUgfHwg
MTsKKyAgICB9CisKKyAgICB1cGRhdGVFZGl0b3JWYWx1ZXModXBkYXRlZFZhbHVlcykKKyAgICB7
CisgICAgICAgIHN1cGVyLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsKKyAgICAg
ICAgdGhpcy5fcmVzZXRTbGlkZXIoKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
cmVzZXRTbGlkZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1ZSA9IHBhcnNl
RmxvYXQodGhpcy5fdmFsdWVOdW1iZXJJbnB1dC52YWx1ZSk7CisgICAgICAgIGlmIChpc05hTih0
aGlzLl9zdGFydGluZ1ZhbHVlKSkKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0aW5nVmFsdWUgPSBw
YXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIpIHx8IDA7CisKKyAgICAgICAgdmFyIG9yaWdpbiA9
IHRoaXMuX3NjYWxlIC8gMjsKKyAgICAgICAgaWYgKHRoaXMuX2FsbG93TmVnYXRpdmVWYWx1ZXMg
fHwgdGhpcy5fc3RhcnRpbmdWYWx1ZSA+IG9yaWdpbikgeworICAgICAgICAgICAgdGhpcy5fc2xp
ZGVyLm1pbiA9IC1vcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zbGlkZXIubWF4ID0gb3JpZ2lu
OworICAgICAgICAgICAgdGhpcy5fc2xpZGVyLnZhbHVlID0gMDsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHRoaXMuX3NsaWRlci5taW4gPSAwOworICAgICAgICAgICAgdGhpcy5fc2xp
ZGVyLm1heCA9IHRoaXMuX3NjYWxlOworICAgICAgICAgICAgdGhpcy5fc2xpZGVyLnZhbHVlID0g
dGhpcy5fc3RhcnRpbmdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVTbGlk
ZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zdGFydGluZ1Zh
bHVlICsgTWF0aC5yb3VuZChwYXJzZUZsb2F0KHRoaXMuX3NsaWRlci52YWx1ZSkgKiAxMDApIC8g
MTAwOworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF9oYW5k
bGVOdW1iZXJJbnB1dENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuX2hhbmRsZU51bWJl
cklucHV0Q2hhbmdlZCgpOworICAgICAgICB0aGlzLl9yZXNldFNsaWRlcigpOworICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWY2OTA1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JJdGVt
LmNzcwpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLml0ZW0udmlzdWFsLXN0eWxlLXNl
bGVjdG9yLWl0ZW0geworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
aGVpZ2h0OiAyNXB4OworICAgIHBhZGRpbmc6IDJweCAwOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4
OworICAgIGZvbnQtc2l6ZTogMTFweDsKK30KKworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9y
LWl0ZW0uc2VsZWN0ZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigzNCwgMTMxLCAyNDYp
ICFpbXBvcnRhbnQ7CisgICAgY29sb3I6IHdoaXRlOworfQorCisuaXRlbS52aXN1YWwtc3R5bGUt
c2VsZWN0b3ItaXRlbSA+IC5kaXNjbG9zdXJlLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0gPiBpbnB1dFt0eXBlPSJjaGVj
a2JveCJdIHsKKyAgICBtYXJnaW46IDQuNXB4IDAgNHB4IDVweDsKK30KKworLml0ZW0udmlzdWFs
LXN0eWxlLXNlbGVjdG9yLWl0ZW0gPiAuaWNvbiB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVp
Z2h0OiAxNnB4OworICAgIG1hcmdpbjogMi41cHggMCAyLjVweCA0cHg7Cit9CisKKy5pdGVtLnZp
c3VhbC1zdHlsZS1zZWxlY3Rvci1pdGVtLm1vZGlmaWVkID4gLmljb24geworICAgIC13ZWJraXQt
ZmlsdGVyOiBicmlnaHRuZXNzKDAuNzUpOworfQorCisuaXRlbS52aXN1YWwtc3R5bGUtc2VsZWN0
b3ItaXRlbSA+IC50aXRsZXMgeworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBwYWRkaW5nOiAw
IDJweCAwIDNweDsKK30KKworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06bm90KC5k
b20tZWxlbWVudC1pY29uKSA+IC50aXRsZXMgPiAudGl0bGUgeworICAgIHBhZGRpbmc6IDAgMXB4
IDJweDsKKyAgICBsaW5lLWhlaWdodDogMTJweDsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisu
aXRlbS52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbTpub3QoLmRvbS1lbGVtZW50LWljb24pLmVk
aXRhYmxlID4gLnRpdGxlcyA+IC50aXRsZSB7CisgICAgY3Vyc29yOiB0ZXh0OworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IHRleHQ7CisgICAgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0
ZS1wbGFpbnRleHQtb25seTsKK30KKworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06
bm90KC5kb20tZWxlbWVudC1pY29uKS5lZGl0YWJsZSA+IC50aXRsZXMgPiAudGl0bGU6Zm9jdXMg
eworICAgIGNvbG9yOiBibGFjazsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBi
b3JkZXItcmFkaXVzOiAycHg7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMTUp
IDAgMXB4IDAsIDAgMCAwIDNweCBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMyk7CisgICAgLyogVE9E
TzogRml4IGN1cnNvciBiYXIgYW5kIGhpZ2hsaWdodCBoZWlnaHQgKi8KK30KKworLml0ZW0udmlz
dWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlOjpiZWZvcmUgewor
ICAgIG1hcmdpbi1yaWdodDogNXB4OworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICAvKiBUaGUg
ZXh0cmEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCB0aGUg
LXdlYmtpdC11c2VyLW1vZGlmeQorICAgIGN1cnNvciBiYXIgZnJvbSBkaXNwbGF5aW5nIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGVtLWRhc2ggKi8KKyAgICBjb250ZW50OiAiIFwyMDE0IjsKK30K
KworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxl
IHsKKyAgICBmb250LXNpemU6IDlweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JJdGVtLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVTZWxlY3Rv
ckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzMjc4MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlU2VsZWN0b3JJdGVtLmpzCkBAIC0wLDAgKzEsMTk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JJdGVtID0gY2xhc3MgVmlzdWFsU3R5
bGVTZWxlY3Rvckl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7
CisgICAgY29uc3RydWN0b3Ioc3R5bGUsIHRpdGxlLCBzdWJ0aXRsZSkKKyAgICB7CisgICAgICAg
IHZhciBpY29uQ2xhc3NOYW1lOworICAgICAgICBzd2l0Y2ggKHN0eWxlLnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLlJ1bGU6CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZS5vd25lclJ1bGUpOworCisgICAgICAgICAgICBp
ZiAoc3R5bGUuaW5oZXJpdGVkKQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkU3R5bGVSdWxlSWNv
blN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuQXV0aG9yKQorICAgICAgICAgICAgICAg
IGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
QXV0aG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgZWxzZSBpZiAo
c3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuVXNlcikK
KyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uLlVzZXJTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAg
ICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1
bGUuVHlwZS5Vc2VyQWdlbnQpCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2VyQWdlbnRTdHlsZVJ1bGVJY29u
U3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5JbnNwZWN0b3IpCisgICAgICAgICAgICAg
ICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5JbnNwZWN0b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUu
SW5saW5lOgorICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5
cGUuQXR0cmlidXRlOgorICAgICAgICAgICAgaWYgKHN0eWxlLmluaGVyaXRlZCkKKyAgICAgICAg
ICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLkluaGVyaXRlZEVsZW1lbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25TdHlsZUNsYXNzTmFt
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGl0bGUgPSB0aXRs
ZS50cmltKCk7CisKKyAgICAgICAgc3VwZXIoWyJ2aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbSIs
IGljb25DbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIHN0eWxlKTsKKworICAgICAgICB0aGlz
Ll9pY29uQ2xhc3NOYW1lID0gaWNvbkNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVl
ID0gdGl0bGU7CisgICAgICAgIHRoaXMuX2VuYWJsZUVkaXRpbmcgPSB0cnVlOworICAgIH0KKwor
ICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGljb25DbGFzc05hbWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2ljb25DbGFzc05hbWU7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGVzIGZy
b20gVHJlZUVsZW1lbnQgKFByaXZhdGUpCisKKyAgICBvbmF0dGFjaCgpCisgICAgeworICAgICAg
ICBzdXBlci5vbmF0dGFjaCgpOworCisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9oaWdobGlnaHROb2Rlc1dpdGhTZWxlY3Rvci5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlb3V0IiwgdGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHQuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRo
aXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5f
Y2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAg
ICAgdGhpcy5fY2hlY2tib3hFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOworICAgICAgICB0aGlz
Ll9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0W1dlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURpc2FibGVkXTsKKyAgICAgICAg
dGhpcy5fdXBkYXRlQ2hlY2tib3hUaXRsZSgpOworICAgICAgICB0aGlzLl9jaGVja2JveEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5faGFuZGxlQ2hlY2tib3hDaGFuZ2Vk
LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuaW5zZXJ0QmVmb3JlKHRo
aXMuX2NoZWNrYm94RWxlbWVudCwgdGhpcy5faWNvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMu
X21haW5UaXRsZUVsZW1lbnQuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9tYWlu
VGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1h
aW5UaXRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbWFpblRpdGxlRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faGFuZGxlTWFpblRpdGxlS2V5
RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbWFpblRpdGxlRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2hpZ2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9tYWluVGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImJsdXIiLCB0aGlzLl9jb21taXRTZWxlY3Rvci5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb24uRXZlbnQuSW5pdGlhbFRleHRNb2RpZmllZCwgdGhpcy5fc3R5bGVUZXh0TW9k
aWZpZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zdHlsZVRleHRNb2RpZmllZCgpOworICAgIH0K
KworICAgIG9uZGVzZWxlY3QoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNs
YXNzTGlzdC5yZW1vdmUoImVkaXRhYmxlIik7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgZ2V0IF9zZWxlY3RvclRleHQoKQorICAgIHsKKyAgICAgICAgdmFyIHRpdGxlVGV4dCA9IHRo
aXMuX21haW5UaXRsZUVsZW1lbnQudGV4dENvbnRlbnQ7CisKKyAgICAgICAgaWYgKCF0aXRsZVRl
eHQgfHwgIXRpdGxlVGV4dC5sZW5ndGgpCisgICAgICAgICAgICB0aXRsZVRleHQgPSB0aGlzLl9t
YWluVGl0bGU7CisKKyAgICAgICAgcmV0dXJuIHRpdGxlVGV4dC50cmltKCk7CisgICAgfQorCisg
ICAgX2hpZ2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5vd25lclJ1bGUpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
bm9kZS5pZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0U2VsZWN0b3IodGhpcy5fc2VsZWN0b3JU
ZXh0LCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGUub3duZXJEb2N1bWVudC5mcmFtZUlkZW50
aWZpZXIpOworICAgIH0KKworICAgIF9oaWRlRE9NTm9kZUhpZ2hsaWdodCgpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsK
KyAgICB9CisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQp
OworCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDb3B5IFJ1bGUiKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY29weVRleHQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZW5lcmF0ZUNTU1J1bGVTdHJp
bmcoKSk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc2V0IiksIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXNldFRleHQoKTsKKyAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNl
bGVjdG9ySXRlbS5FdmVudC5TdHlsZVRleHRSZXNldCk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7
CisKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOworICAgIH0KKworICAgIF9oYW5kbGVDaGVj
a2JveENoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGVDaGVja2JveFRp
dGxlKCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5FdmVudC5DaGVja2JveENoYW5nZWQsIHtlbmFibGVk
OiB0aGlzLl9jaGVja2JveEVsZW1lbnQuY2hlY2tlZH0pOworICAgIH0KKworICAgIF91cGRhdGVD
aGVja2JveFRpdGxlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NoZWNrYm94RWxlbWVudC50aXRs
ZSA9IHRoaXMuX2NoZWNrYm94RWxlbWVudC5jaGVja2VkID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDbGljayB0byBkaXNhYmxlIHRoZSBzZWxlY3RlZCBydWxlIikgOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNsaWNrIHRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgcnVsZSIpOworICAgIH0KKworICAg
IF9oYW5kbGVNYWluVGl0bGVNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuY2xhc3NMaXN0LnRvZ2dsZSgiZWRpdGFibGUiLCB0aGlzLnNlbGVjdGVkKTsK
KyAgICB9CisKKyAgICBfaGFuZGxlTWFpblRpdGxlS2V5RG93bihldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2hpZ2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yKCk7CisKKyAgICAgICAgaWYgKGV2
ZW50LmtleUNvZGUgPT09IDEzKSB7CisgICAgICAgICAgICB0aGlzLl9tYWluVGl0bGVFbGVtZW50
LmJsdXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9j
b21taXRTZWxlY3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdo
dCgpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGFi
bGUiKTsKKworICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9zZWxlY3RvclRleHQ7CisgICAgICAg
IGlmICh2YWx1ZSA9PT0gdGhpcy5fbGFzdFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qub3duZXJSdWxlLnNlbGVjdG9yVGV4dCA9IHZh
bHVlOworICAgIH0KKworICAgIF9zdHlsZVRleHRNb2RpZmllZCgpCisgICAgeworICAgICAgICB0
aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnRvZ2dsZSgibW9kaWZpZWQiLCB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0Lm1vZGlmaWVkKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVTZWxlY3Rvckl0ZW0uRXZlbnQgPSB7CisgICAgU3R5bGVUZXh0UmVzZXQ6ICJ2aXN1YWwt
c3R5bGUtc2VsZWN0b3ItaXRlbS1zdHlsZS10ZXh0LXJlc2V0IiwKKyAgICBDaGVja2JveENoYW5n
ZWQ6ICJ2aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbS1jaGVja2JveC1jaGFuZ2VkIgorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVTZWxlY3RvclNlY3Rpb24uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZWQ3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2Vj
dGlvbi5jc3MKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuZGV0YWlscy1zZWN0aW9u
LnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmhlYWRlciB7CisgICAgZGlzcGxheTog
ZmxleDsKKyAgICBoZWlnaHQ6IDIycHg7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0
eWxlLXNlbGVjdG9yLXNlY3Rpb246bm90KC5jb2xsYXBzZWQpID4gLmhlYWRlciB7CisgICAgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKK30KKworQG1lZGlhICgt
d2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAgICAuZGV0YWlscy1zZWN0aW9u
LnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uOm5vdCguY29sbGFwc2VkKSA+IC5oZWFkZXIg
eworICAgICAgICBib3JkZXItd2lkdGg6IDAuNXB4ICFpbXBvcnRhbnQ7CisgICAgfQorfQorCisu
ZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmhlYWRlciA+
IC5jdXJyZW50LXNlbGVjdG9yIHsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0gODVweCk7CisgICAg
bWFyZ2luLWxlZnQ6IDEwcHg7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzog
ZWxsaXBzaXM7Cit9CisKKy52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbi5kZXRhaWxzLXNl
Y3Rpb246bm90KC5jb2xsYXBzZWQpID4gLmhlYWRlciA+IC5jdXJyZW50LXNlbGVjdG9yIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxl
Y3Rvci1zZWN0aW9uID4gLmhlYWRlciA+IC5jdXJyZW50LXNlbGVjdG9yID4gLmljb24geworICAg
IHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAzcHg7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVj
dG9yLXNlY3Rpb24gPiAuaGVhZGVyID4gLmN1cnJlbnQtc2VsZWN0b3IgPiBzcGFuIHsKKyAgICBt
YXJnaW4tbGVmdDogMjFweDsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2Vs
ZWN0b3Itc2VjdGlvbiA+IC5oZWFkZXIgPiAuY29udHJvbHMgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICByaWdodDogMDsKKyAgICB0b3A6IDA7CisgICAgYm9yZGVyLWxlZnQ6IDFweCBz
b2xpZCBsaWdodGdyZXk7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVj
dG9yLXNlY3Rpb24uY29sbGFwc2VkID4gLmhlYWRlciA+IC5jb250cm9scyB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2Vj
dGlvbiA+IC5oZWFkZXIgPiAuY29udHJvbHMgPiAudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rp
b24tYWRkLXJ1bGUgeworICAgIHdpZHRoOiAyM3B4OworICAgIGhlaWdodDogMjFweDsKKyAgICBw
YWRkaW5nOiA0cHggNXB4OworICAgIG9wYWNpdHk6IDAuNzsKK30KKworLmRldGFpbHMtc2VjdGlv
bi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5jb250ZW50ID4gLnNlbGVjdG9ycyB7
CisgICAgbWF4LWhlaWdodDogMTEwcHg7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKKy5kZXRh
aWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24gPiAuY29udGVudCA+IC5z
ZWxlY3RvcnMgPiAuc2VsZWN0b3ItbGlzdCB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmct
bGVmdDogMDsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3Vh
bC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmNvbnRlbnQgPiAuc2VsZWN0b3JzID4gLnNlbGVj
dG9yLWxpc3QgPiAudmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06bnRoLWNoaWxkKG9kZCkgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3Vh
bC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmNvbnRlbnQgPiAuc2VsZWN0b3JzID4gLnNlbGVj
dG9yLWxpc3QgPiAuc2VjdGlvbi1kaXZpZGVyIHsKKyAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlj
a3k7CisgICAgdG9wOiAtMXB4OworICAgIGhlaWdodDogMTdweDsKKyAgICBwYWRkaW5nOiAycHg7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MiwgMjQyLCAyNDIpOworICAgIGJvcmRlci1j
b2xvcjogcmdiKDE3OSwgMTc5LCAxNzkpOworICAgIGJvcmRlci1zdHlsZTogc29saWQ7CisgICAg
Ym9yZGVyLXdpZHRoOiAxcHggMDsKKyAgICB6LWluZGV4OiAxMDA7Cit9CisKKy5kZXRhaWxzLXNl
Y3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24gPiAuY29udGVudCA+IC5zZWxlY3Rv
cnMgPiAuc2VsZWN0b3ItbGlzdCA+IC5zZWN0aW9uLWRpdmlkZXIgPiAuZGlzY2xvc3VyZS1idXR0
b24sCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmNv
bnRlbnQgPiAuc2VsZWN0b3JzID4gLnNlbGVjdG9yLWxpc3QgPiAuc2VjdGlvbi1kaXZpZGVyID4g
Lmljb24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFs
LXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24gPiAuY29udGVudCA+IC5zZWxlY3RvcnMgPiAuc2VsZWN0
b3ItbGlzdCA+IC5zZWN0aW9uLWRpdmlkZXIgPiAudGl0bGVzID4gLnRpdGxlIHsKKyAgICBvdmVy
ZmxvdzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgdGV4dC1vdmVyZmxv
dzogZWxsaXBzaXM7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9y
LXNlY3Rpb24gPiAuY29udGVudCA+IC5zZWxlY3RvcnMgPiAuc2VsZWN0b3ItbGlzdCA+IC5zZWN0
aW9uLWRpdmlkZXIgfiAudmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06bnRoLWNoaWxkKGV2ZW4p
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworLmRldGFpbHMtc2VjdGlvbi52
aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5jb250ZW50ID4gLnNlbGVjdG9ycyA+IC5z
ZWxlY3Rvci1saXN0ID4gLnNlY3Rpb24tZGl2aWRlciB+IC52aXN1YWwtc3R5bGUtc2VsZWN0b3It
aXRlbTpudGgtY2hpbGQob2RkKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjQyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVj
dG9yU2VjdGlvbi5qcwpAQCAtMCwwICsxLDMwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMkFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uID0gY2xhc3MgVmlzdWFsU3R5bGVTZWxlY3Rv
clNlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24KK3sKKyAgICBjb25z
dHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RvclNlY3Rpb24gPSB7
ZWxlbWVudDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9OworICAgICAgICBzZWxlY3Rv
clNlY3Rpb24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RvcnMiKTsKKworICAgICAgICB2
YXIgY29udHJvbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgY29udHJvbEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udHJvbHMiKTsKKworICAgICAgICBz
dXBlcigidmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlN0eWxlIFJ1bGVzIiksIFtzZWxlY3RvclNlY3Rpb25dLCBjb250cm9sRWxlbWVudCk7CisK
KyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsCisgICAgICAgIHRoaXMu
X25vZGVTdHlsZXMgPSBudWxsOworCisgICAgICAgIHRoaXMuX2N1cnJlbnRTZWxlY3RvciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jdXJyZW50U2VsZWN0
b3IuY2xhc3NMaXN0LmFkZCgiY3VycmVudC1zZWxlY3RvciIpOworCisgICAgICAgIHZhciBjdXJy
ZW50U2VsZWN0b3JJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAg
IGN1cnJlbnRTZWxlY3Rvckljb24uY2xhc3NMaXN0LmFkZCgiaWNvbiIpOworICAgICAgICB0aGlz
Ll9jdXJyZW50U2VsZWN0b3IuYXBwZW5kQ2hpbGQoY3VycmVudFNlbGVjdG9ySWNvbik7CisKKyAg
ICAgICAgdGhpcy5fY3VycmVudFNlbGVjdG9yVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlbGVjdG9yLmFwcGVuZENoaWxkKHRoaXMu
X2N1cnJlbnRTZWxlY3RvclRleHQpOworCisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY3VycmVudFNlbGVjdG9yKTsKKworICAgICAgICB2YXIgc2VsZWN0b3JM
aXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgc2VsZWN0b3JMaXN0
LmNsYXNzTGlzdC5hZGQoInNlbGVjdG9yLWxpc3QiKTsKKyAgICAgICAgc2VsZWN0b3JTZWN0aW9u
LmVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VsZWN0b3JMaXN0KTsKKworICAgICAgICB0aGlzLl9zZWxl
Y3RvcnMgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKHNlbGVjdG9yTGlzdCk7CisgICAg
ICAgIHRoaXMuX3NlbGVjdG9ycy5vbnNlbGVjdCA9IHRoaXMuX3NlbGVjdG9yQ2hhbmdlZC5iaW5k
KHRoaXMpOworICAgICAgICB0aGlzLl9mb2N1c05leHROZXdJbnNwZWN0b3JSdWxlID0gZmFsc2U7
CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvUGx1cy5zdmciLCAidmlzdWFs
LXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24tYWRkLXJ1bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsaWNrIHRvIGFkZCBhIG5ldyBydWxlLiIpLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAg
ICAgICB3cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYWRkTmV3UnVsZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRyb2xFbGVtZW50LmFwcGVuZENoaWxkKHdyYXBw
ZXIpOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faGFuZGxlTW91c2VPdmVyLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlb3V0IiwgdGhpcy5faGFuZGxlTW91c2VPdXQuYmluZCh0aGlzKSk7CisgICAgfQorCisg
ICAgLy8gUHVibGljCisKKyAgICB1cGRhdGUobm9kZVN0eWxlcykKKyAgICB7CisgICAgICAgIHZh
ciBzdHlsZSA9IHRoaXMuY3VycmVudFJ1bGUoKTsKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAg
ICAgICAgdGhpcy5fbm9kZVN0eWxlcy5fX2xhc3RTZWxlY3RlZFJ1bGUgPSBzdHlsZTsKKworICAg
ICAgICBpZiAobm9kZVN0eWxlcykKKyAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMgPSBub2Rl
U3R5bGVzOworCisgICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zZWxlY3RvcnMucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAg
ICAgICB2YXIgcHJldmlvdXNSdWxlID0gbnVsbDsKKworICAgICAgICAvLyBQc2V1ZG8gU3R5bGVz
CisgICAgICAgIHZhciBwc2V1ZG9FbGVtZW50cyA9IHRoaXMuX25vZGVTdHlsZXMucHNldWRvRWxl
bWVudHM7CisgICAgICAgIHZhciBwc2V1ZG9SdWxlcyA9IFtdOworCisgICAgICAgIGZvciAodmFy
IHBzZXVkb0lkZW50aWZpZXIgaW4gcHNldWRvRWxlbWVudHMpCisgICAgICAgICAgICBwc2V1ZG9S
dWxlcyA9IHBzZXVkb1J1bGVzLmNvbmNhdChwc2V1ZG9FbGVtZW50c1twc2V1ZG9JZGVudGlmaWVy
XS5tYXRjaGVkUnVsZXMpOworCisgICAgICAgIHZhciBvcmRlcmVkUHNldWRvUnVsZXMgPSB1bmlx
dWVPcmRlcmVkUnVsZXMocHNldWRvUnVsZXMpOworICAgICAgICAvLyBSZXZlcnNlIHRoZSBhcnJh
eSB0byBhbGxvdyBlbnN1cmUgdGhhdCBzcGxpY2luZyB0aGUgYXJyYXkgd2lsbCBub3QgbWVzcyB3
aXRoIHRoZSBvcmRlci4KKyAgICAgICAgaWYgKG9yZGVyZWRQc2V1ZG9SdWxlcy5sZW5ndGgpCisg
ICAgICAgICAgICBvcmRlcmVkUHNldWRvUnVsZXMucmV2ZXJzZSgpOworCisgICAgICAgIGZ1bmN0
aW9uIGNyZWF0ZVNlbGVjdG9ySXRlbShzdHlsZSwgdGl0bGUsIHN1YnRpdGxlKSB7CisgICAgICAg
ICAgICB2YXIgc2VsZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JJ
dGVtKHN0eWxlLCB0aXRsZSwgc3VidGl0bGUpOworICAgICAgICAgICAgc2VsZWN0b3IuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3Rvckl0ZW0uRXZlbnQuU3R5
bGVUZXh0UmVzZXQsIHRoaXMuX3N0eWxlVGV4dFJlc2V0LmJpbmQodGhpcykpOworICAgICAgICAg
ICAgc2VsZWN0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxl
Y3Rvckl0ZW0uRXZlbnQuQ2hlY2tib3hDaGFuZ2VkLCB0aGlzLl90cmVlRWxlbWVudENoZWNrYm94
VG9nZ2xlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9ycy5hcHBlbmRD
aGlsZChzZWxlY3Rvcik7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9mb2N1c05leHROZXdJbnNw
ZWN0b3JSdWxlICYmIHN0eWxlLm93bmVyUnVsZSAmJiBzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5JbnNwZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBz
ZWxlY3Rvci5zZWxlY3QodHJ1ZSk7CisgICAgICAgICAgICAgICAgc2VsZWN0b3IuZWxlbWVudC5z
Y3JvbGxJbnRvVmlldygpOworICAgICAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMuX19sYXN0
U2VsZWN0ZWRSdWxlID0gc3R5bGU7CisgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNOZXh0TmV3
SW5zcGVjdG9yUnVsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHRoaXMuX25vZGVTdHlsZXMuX19sYXN0U2VsZWN0ZWRS
dWxlID09PSBzdHlsZSkgeworICAgICAgICAgICAgICAgIHNlbGVjdG9yLnNlbGVjdCh0cnVlKTsK
KyAgICAgICAgICAgICAgICBzZWxlY3Rvci5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB1bmlxdWVPcmRlcmVkUnVs
ZXMob3JkZXJlZFJ1bGVzKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdW5pcXVlUnVsZXMg
PSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgcnVsZSBvZiBvcmRlcmVkUnVsZXMpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHZh
ciBleGlzdGluZ1J1bGUgb2YgdW5pcXVlUnVsZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFydWxlLmlzRXF1YWxUbyhleGlzdGluZ1J1bGUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp
ZiAoZm91bmQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAg
ICAgdW5pcXVlUnVsZXMucHVzaChydWxlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHVuaXF1ZVJ1bGVzOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5zZXJ0
QWxsTWF0Y2hpbmdQc2V1ZG9SdWxlcyhmb3JjZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFvcmRlcmVkUHNldWRvUnVsZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgaWYgKGZvcmNlKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IG9y
ZGVyZWRQc2V1ZG9SdWxlcy5sZW5ndGggLSAxOyBqID49IDA7IC0taikgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgcHNldWRvUnVsZSA9IG9yZGVyZWRQc2V1ZG9SdWxlc1tqXTsKKyAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlU2VsZWN0b3JJdGVtLmNhbGwodGhpcywgcHNldWRvUnVsZS5zdHls
ZSwgcHNldWRvUnVsZS5zZWxlY3RvclRleHQsIHBzZXVkb1J1bGUubWVkaWFUZXh0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3JkZXJlZFBzZXVkb1J1bGVzID0gW107Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJldmlvdXNSdWxlKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZm9yICh2YXIgaiA9IG9yZGVyZWRQc2V1ZG9S
dWxlcy5sZW5ndGggLSAxOyBqID49IDA7IC0taikgeworICAgICAgICAgICAgICAgIHZhciBwc2V1
ZG9SdWxlID0gb3JkZXJlZFBzZXVkb1J1bGVzW2pdOworICAgICAgICAgICAgICAgIGlmICghcHNl
dWRvUnVsZS5zZWxlY3RvcklzR3JlYXRlcihwcmV2aW91c1J1bGUubW9zdFNwZWNpZmljU2VsZWN0
b3IpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGNy
ZWF0ZVNlbGVjdG9ySXRlbS5jYWxsKHRoaXMsIHBzZXVkb1J1bGUuc3R5bGUsIHBzZXVkb1J1bGUu
c2VsZWN0b3JUZXh0LCBwc2V1ZG9SdWxlLm1lZGlhVGV4dCk7CisgICAgICAgICAgICAgICAgcHJl
dmlvdXNSdWxlID0gcHNldWRvUnVsZTsKKyAgICAgICAgICAgICAgICBvcmRlcmVkUHNldWRvUnVs
ZXMuc3BsaWNlKGosIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCF0aGlzLl9ub2RlU3R5bGVzLl9fbGFzdFNlbGVjdGVkUnVsZSkKKyAgICAgICAgICAgIHRoaXMu
X25vZGVTdHlsZXMuX19sYXN0U2VsZWN0ZWRSdWxlID0gdGhpcy5fbm9kZVN0eWxlcy5pbmxpbmVT
dHlsZTsKKworICAgICAgICAvLyBJbmxpbmUgU3R5bGUKKyAgICAgICAgY3JlYXRlU2VsZWN0b3JJ
dGVtLmNhbGwodGhpcywgdGhpcy5fbm9kZVN0eWxlcy5pbmxpbmVTdHlsZSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUaGlzIEVsZW1lbnQiKSk7CisKKyAgICAgICAgLy8gTWF0Y2hlZCBSdWxlcwor
ICAgICAgICBmb3IgKHZhciBydWxlIG9mIHVuaXF1ZU9yZGVyZWRSdWxlcyh0aGlzLl9ub2RlU3R5
bGVzLm1hdGNoZWRSdWxlcykpIHsKKyAgICAgICAgICAgIGlmIChydWxlLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5DU1NSdWxlLlR5cGUuVXNlckFnZW50KSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0
QWxsTWF0Y2hpbmdQc2V1ZG9SdWxlcy5jYWxsKHRoaXMsIHRydWUpOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnNlcnRBbGxNYXRjaGlu
Z1BzZXVkb1J1bGVzLmNhbGwodGhpcyk7CisgICAgICAgICAgICBjcmVhdGVTZWxlY3Rvckl0ZW0u
Y2FsbCh0aGlzLCBydWxlLnN0eWxlLCBydWxlLnNlbGVjdG9yVGV4dCwgcnVsZS5tZWRpYVRleHQp
OworICAgICAgICAgICAgcHJldmlvdXNSdWxlID0gcnVsZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEp1c3QgaW4gY2FzZSB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyBwc2V1ZG8tc3R5bGVzLgor
ICAgICAgICBpbnNlcnRBbGxNYXRjaGluZ1BzZXVkb1J1bGVzLmNhbGwodGhpcywgdHJ1ZSk7CisK
KyAgICAgICAgLy8gSW5oZXJpdGVkIFJ1bGVzCisgICAgICAgIGZvciAodmFyIGluaGVyaXRlZCBv
ZiB0aGlzLl9ub2RlU3R5bGVzLmluaGVyaXRlZFJ1bGVzKSB7CisgICAgICAgICAgICBpZiAoIWlu
aGVyaXRlZC5tYXRjaGVkUnVsZXMgfHwgIWluaGVyaXRlZC5tYXRjaGVkUnVsZXMubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgZGl2aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KCJzZWN0aW9uLWRpdmlkZXIiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkluaGVyaXRlZCBmcm9tICVzIikuZm9ybWF0KFdlYkluc3BlY3Rv
ci5kaXNwbGF5TmFtZUZvck5vZGUoaW5oZXJpdGVkLm5vZGUpKSk7CisgICAgICAgICAgICBkaXZp
ZGVyLnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9ycy5hcHBl
bmRDaGlsZChkaXZpZGVyKTsKKworICAgICAgICAgICAgZm9yICh2YXIgcnVsZSBvZiB1bmlxdWVP
cmRlcmVkUnVsZXMoaW5oZXJpdGVkLm1hdGNoZWRSdWxlcykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLlVzZXJBZ2VudCkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBjcmVhdGVTZWxl
Y3Rvckl0ZW0uY2FsbCh0aGlzLCBydWxlLnN0eWxlLCBydWxlLnNlbGVjdG9yVGV4dCwgcnVsZS5t
ZWRpYVRleHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZm9j
dXNOZXh0TmV3SW5zcGVjdG9yUnVsZSA9IGZhbHNlOworICAgIH0KKworICAgIGN1cnJlbnRSdWxl
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcyB8fCAhdGhpcy5fc2VsZWN0
b3JzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3NlbGVjdG9ycy5zZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0OworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9zZWxlY3RvckNoYW5nZWQoc2Vs
ZWN0ZWRUcmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9jdXJyZW50U2VsZWN0b3Iu
Y2xhc3NOYW1lID0gImN1cnJlbnQtc2VsZWN0b3IgIiArIHNlbGVjdGVkVHJlZUVsZW1lbnQuaWNv
bkNsYXNzTmFtZTsKKworICAgICAgICB2YXIgdGV4dCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQubWFp
blRpdGxlOworICAgICAgICB2YXIgc3VidGl0bGUgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnN1YnRp
dGxlOworICAgICAgICBpZiAoc3VidGl0bGUgJiYgc3VidGl0bGUubGVuZ3RoKQorICAgICAgICAg
ICAgdGV4dCArPSAiIFx1MjAxNCAiICsgc3VidGl0bGU7CisKKyAgICAgICAgdGhpcy5fY3VycmVu
dFNlbGVjdG9yVGV4dC50ZXh0Q29udGVudCA9IHRleHQ7CisKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9u
LkV2ZW50LlNlbGVjdG9yQ2hhbmdlZCk7CisgICAgfQorCisgICAgX3N0eWxlVGV4dFJlc2V0KCkK
KyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TZWxlY3RvckNoYW5nZWQpOworICAg
IH0KKworICAgIF9hZGROZXdSdWxlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9u
b2RlU3R5bGVzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX25vZGVTdHls
ZXMuYWRkRW1wdHlSdWxlKCk7CisgICAgICAgIHRoaXMuX2ZvY3VzTmV4dE5ld0luc3BlY3RvclJ1
bGUgPSB0cnVlOworICAgIH0KKworICAgIF90cmVlRWxlbWVudENoZWNrYm94VG9nZ2xlZChldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBlbmFibGVkID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAmJiBl
dmVudC5kYXRhLmVuYWJsZWQ7CisgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuY3VycmVudFJ1bGUo
KTsKKyAgICAgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgdGV4dCA9IHN0eWxlLnRleHQ7CisgICAgICAgIGlmICghdGV4dCB8fCAhdGV4dC5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gIiI7Cisg
ICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSB0ZXh0LnJlcGxh
Y2UoL1xzKihcL1wqfFwqXC8pXHMqL2csICIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVwbGFjZW1lbnQgPSAiLyogIiArIHRleHQucmVwbGFjZSgvKFxzKjsoPyEkKVxzKikvZywgIiQx
ICovLyogIikgKyAiICovIjsKKworICAgICAgICBzdHlsZS50ZXh0ID0gcmVwbGFjZW1lbnQ7Cisg
ICAgICAgIHN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURp
c2FibGVkXSA9ICFlbmFibGVkOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uRXZlbnQuU2VsZWN0b3JD
aGFuZ2VkKTsKKworICAgIH0KKworICAgIF9oYW5kbGVNb3VzZU92ZXIoKQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgc3R5bGUgPSB0aGlzLmN1cnJlbnRSdWxlKCk7CisKKyAgICAgICAgaWYgKCFzdHlsZS5vd25l
clJ1bGUpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGln
aHRET01Ob2RlKHN0eWxlLm5vZGUuaWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodFNlbGVjdG9y
KHN0eWxlLm93bmVyUnVsZS5zZWxlY3RvclRleHQsIHN0eWxlLm5vZGUub3duZXJEb2N1bWVudC5m
cmFtZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIF9oYW5kbGVNb3VzZU91dCgpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVu
dCA9IHsKKyAgICBTZWxlY3RvckNoYW5nZWQ6ICJ2aXN1YWwtc3R5bGUtc2VsZWN0b3ItY2hhbmdl
ZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzQ29udHJvbGxlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRk
YzYzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVz
LWNvbnRyb2xsZXIgfiA6bm90KC52aXNpYmxlKSB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOwor
ICAgIGhlaWdodDogMDsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250
cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRh
aW5lciB7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXBy
b3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29u
dHJvbGxlci1jb250YWluZXIgPiBidXR0b24geworICAgIG1hcmdpbjogMCAycHggMnB4OworICAg
IGJvcmRlci1yYWRpdXM6IDNweDsKKyAgICBib3JkZXItd2lkdGg6IDAgMXB4OworICAgIGJvcmRl
ci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7
Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0b24u
c2VsZWN0ZWQgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDM0LCAxMzEsIDI0NiwgMSk7Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMt
Y29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1j
b250YWluZXIgPiBidXR0b246bm90KC5zZWxlY3RlZCk6aG92ZXIgeworICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM0LCAxMzEsIDI0NiwgMC41KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9s
bGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNmU2YWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29u
dHJvbGxlciA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25zdHJ1Y3Rvcih0
YWJNYXApCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIi
KTsKKworICAgICAgICB0aGlzLl9jb250cm9sbGVyQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xsZXJDb250YWluZXIuY2xhc3NM
aXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFp
bmVyIik7CisKKyAgICAgICAgdGhpcy5fdGFiTWFwID0gdGFiTWFwOworICAgICAgICB0aGlzLl90
YWJCdXR0b25zID0gW107CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX3RhYk1hcCkg
eworICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRv
biIpOworICAgICAgICAgICAgYnV0dG9uLmlkID0ga2V5OworICAgICAgICAgICAgYnV0dG9uLnRl
eHRDb250ZW50ID0gdGhpcy5fdGFiTWFwW2tleV0udGl0bGU7CisgICAgICAgICAgICBidXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVCdXR0b25DbGlja2VkLmJpbmQo
dGhpcykpOworCisgICAgICAgICAgICB0aGlzLl9jb250cm9sbGVyQ29udGFpbmVyLmFwcGVuZENo
aWxkKGJ1dHRvbik7CisgICAgICAgICAgICB0aGlzLl90YWJCdXR0b25zLnB1c2goYnV0dG9uKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBmaXJzdEJ1dHRvbiA9IHRoaXMuX3RhYkJ1dHRvbnNb
MF07CisgICAgICAgIGZpcnN0QnV0dG9uLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisgICAg
ICAgIHRoaXMuX3RhYk1hcFtmaXJzdEJ1dHRvbi5pZF0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2
aXNpYmxlIik7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250
cm9sbGVyQ29udGFpbmVyKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxl
QnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGl0ZW0gb2YgdGhp
cy5fdGFiQnV0dG9ucykgeworICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gaXRlbSA9PT0gZXZl
bnQudGFyZ2V0OworCisgICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdGVk
Iiwgc2VsZWN0ZWQpOworCisgICAgICAgICAgICB2YXIgdGFiID0gdGhpcy5fdGFiTWFwW2l0ZW0u
aWRdOworICAgICAgICAgICAgdGFiLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgidmlzaWJsZSIs
IHNlbGVjdGVkKTsKKworICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlFZGl0b3Igb2YgdGFi
LnByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBkYXRlKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVVJMSW5wdXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYyNjk1MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVVJM
SW5wdXQuanMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVVSTElucHV0ID0gY2xhc3MgVmlzdWFsU3R5bGVVUkxJbnB1dCBleHRlbmRzIFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAgY29uc3RydWN0b3IocHJv
cGVydHlOYW1lcywgdGV4dCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihw
cm9wZXJ0eU5hbWVzLCB0ZXh0LCBudWxsLCBudWxsLCAidXJsLWlucHV0IiwgbGF5b3V0UmV2ZXJz
ZWQpOworCisgICAgICAgIHRoaXMuX3VybElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsKKyAgICAgICAgdGhpcy5fdXJsSW5wdXQudHlwZSA9ICJ1cmwiOworICAgICAgICB0
aGlzLl91cmxJbnB1dC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW50ZXIg
YSB1cmwiKTsKKyAgICAgICAgdGhpcy5fdXJsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAi
LCB0aGlzLl92YWx1ZURpZENoYW5nZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdXJsSW5wdXQpOworCisgICAgICAgIHRoaXMuX3Zh
bHVlUmVnRXhwID0gL14oPzp1cmxcKFxzKikoW15cKV0qKSg/OlxzKlwpXHMqOz8pJC87CisgICAg
fQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3VybElucHV0LnZhbHVlOworICAgIH0KKworICAgIHNldCB2YWx1ZSh2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0gdGhpcy52YWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl91cmxJbnB1dC52YWx1ZSA9IHZhbHVlOwor
ICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHZhciB2
YWx1ZSA9IHRoaXMudmFsdWU7CisKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuICJ1cmwoIiArIHRo
aXMudmFsdWUgKyAiKSI7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlk
ZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjY2E2MWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVVuaXRTbGlkZXIuY3NzCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci51bml0LXNsaWRlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnNsaWRlciB7CisgICAgcG9zaXRpb246IHJl
bGF0aXZlOworICAgIG1hcmdpbjogNXB4IDFweCAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci51bml0LXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLnNsaWRlciA+IGltZyB7CisgICAgdG9wOiAtMXB4OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci51bml0LXNsaWRlci5vcGFjaXR5ID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuc2xpZGVyIHsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMCwgMCwgMCwgMCksICMwMDApLCB1
cmwoLi4vSW1hZ2VzL0NoZWNrZXJzLnN2Zyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVVuaXRT
bGlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhNTZkMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5qcwpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVW5pdFNsaWRlciA9IGNsYXNzIFZpc3VhbFN0eWxlVW5p
dFNsaWRlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7
CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgbGFiZWwsIGxheW91dFJldmVyc2VkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgbGFiZWwsIG51bGwsIG51bGwsICJ1
bml0LXNsaWRlciIsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl9zbGlkZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNsaWRlcjsKKyAgICAgICAgdGhpcy5fc2xpZGVyLmRlbGVnYXRlID0g
dGhpczsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2xp
ZGVyLmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gL14oW147XSspXHMq
Oz8kLzsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmIChpc05hTih2YWx1ZSkgfHwgdGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9w
ZXJ0eU1pc3NpbmcpCisgICAgICAgICAgICB0aGlzLl9zbGlkZXIua25vYlggPSB0aGlzLl91cGRh
dGVkVmFsdWVzLnBsYWNlaG9sZGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9z
bGlkZXIudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5fc2xpZGVyLnZhbHVlICogMTAwKSAvIDEwMDsK
KyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy52YWx1ZTsKKyAgICB9CisKKyAgICBzbGlkZXJWYWx1ZURpZENoYW5nZShzbGlkZXIs
IHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9Cit9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258799</attachid>
            <date>2015-08-11 21:29:03 -0700</date>
            <delta_ts>2015-08-14 18:56:39 -0700</delta_ts>
            <desc>[WIP] Patch</desc>
            <filename>project.txt</filename>
            <type>text/plain</type>
            <size>293859</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDA3ZTlhYzEuLmU2MWVlMDUgMTAw
NjQ0CkJpbmFyeSBmaWxlcyBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Zpc3Vh
bFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0ZjkyOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1Zpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMTMwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVy
ID0gY2xhc3MgVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAg
ICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsK
KworICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNv
bXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQgPT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICB0aGlzLmNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQgPSB0aGlzLl9kZWxl
Z2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNPbkl0ZW1DcmVhdGVkOworCisgICAgICAgIHRoaXMu
X3N1Z2dlc3Rpb25zVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldyh0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBudWxsOworICAgICAgICB0
aGlzLl9jdXJyZW50Q29tcGxldGlvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb21w
bGV0aW9uSW5kZXggPSAwOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZpc2li
bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBsZXRpb25zICYmIHRoaXMuX2N1
cnJlbnRDb21wbGV0aW9ucy5sZW5ndGggJiYgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGU7
CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVy
biAhIXRoaXMuX2NvbXBsZXRpb25zOworICAgIH0KKworICAgIGdldCBjdXJyZW50Q29tcGxldGlv
bigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDb21wbGV0aW9uc1t0aGlz
Ll9zZWxlY3RlZENvbXBsZXRpb25JbmRleF0gfHwgbnVsbDsKKyAgICB9CisKKyAgICBzZXQgY29t
cGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlzLl9jb21wbGV0aW9ucyA9
IGNvbXBsZXRpb25zIHx8IG51bGw7CisgICAgfQorCisgICAgY29tcGxldGlvblN1Z2dlc3Rpb25z
Q2xpY2tlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCB0ZXh0KQorICAgIHsKKyAgICAgICAg
c3VnZ2VzdGlvbnNWaWV3LmhpZGUoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50
LkNvbXBsZXRpb25TZWxlY3RlZCwge3RleHR9KTsKKyAgICB9CisKKyAgICBwcmV2aW91cygpCisg
ICAgeworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuc2VsZWN0UHJldmlvdXMoKTsKKyAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRDb21wbGV0aW9uSW5kZXggPSB0aGlzLl9zdWdnZXN0aW9uc1Zp
ZXcuc2VsZWN0ZWRJbmRleDsKKyAgICB9CisKKyAgICBuZXh0KCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3N1Z2dlc3Rpb25zVmlldy5zZWxlY3ROZXh0KCk7CisgICAgICAgIHRoaXMuX3NlbGVjdGVk
Q29tcGxldGlvbkluZGV4ID0gdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnNlbGVjdGVkSW5kZXg7Cisg
ICAgfQorCisgICAgdXBkYXRlKHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0Nv
bXBsZXRpb25zKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuX2N1
cnJlbnRDb21wbGV0aW9ucyA9IHRoaXMuX2NvbXBsZXRpb25zLnN0YXJ0c1dpdGgodmFsdWUpOwor
CisgICAgICAgIHZhciBjdXJyZW50Q29tcGxldGlvbnNMZW5ndGggPSB0aGlzLl9jdXJyZW50Q29t
cGxldGlvbnMubGVuZ3RoOworICAgICAgICBpZiAoY3VycmVudENvbXBsZXRpb25zTGVuZ3RoKSB7
CisgICAgICAgICAgICBpZiAoY3VycmVudENvbXBsZXRpb25zTGVuZ3RoID09PSAxICYmIHRoaXMu
X2N1cnJlbnRDb21wbGV0aW9uc1swXSA9PT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICB0aGlz
LmhpZGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENvbXBsZXRpb25JbmRleCA+PSBjdXJyZW50
Q29tcGxldGlvbnNMZW5ndGgpCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb21wbGV0
aW9uSW5kZXggPSAwOworCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudXBkYXRl
KHRoaXMuX2N1cnJlbnRDb21wbGV0aW9ucywgdGhpcy5fc2VsZWN0ZWRDb21wbGV0aW9uSW5kZXgp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmhp
ZGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNob3coYm91bmRzLCBw
YWRkaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnNob3coYm91bmRzLnBhZChwYWRkaW5n
IHx8IDApKTsKKyAgICB9CisKKyAgICBoaWRlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9z
dWdnZXN0aW9uc1ZpZXcuaXNIYW5kbGluZ0NsaWNrRXZlbnQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOworICAgIH0KK307CisK
K1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5FdmVudCA9IHsK
KyAgICBDb21wbGV0aW9uU2VsZWN0ZWQ6ICJ2aXN1YWwtc3R5bGUtY29tcGxldGlvbnMtY29udHJv
bGxlci1jb21wbGV0aW9uLXNlbGVjdGVkIgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyQm90aC5zdmcgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ2xlYXJCb3RoLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2U0MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyQm90aC5zdmcKQEAgLTAs
MCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0g
Q29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxz
dmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC
b3g9IjAgMCAxNiAxNiI+CisgICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjAuNSIgeT0iMS41
IiB3aWR0aD0iMy41IiBoZWlnaHQ9IjEyIiBmaWxsPSJ0cmFuc3BhcmVudCIgc3Ryb2tlPSJibGFj
ayIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9IjAuNSAzLjUgMC41IDUu
NSA0IDMuNSA0IDEuNSIgc3Ryb2tlPSJub25lIiBzdHlsZT0ib3BhY2l0eTogMC43IiAvPgorICAg
IDxwb2x5Z29uIGNsYXNzPSJmaWxsZWQiIHBvaW50cz0iMC41IDcuNSAwLjUgOS41IDQgNy41IDQg
NS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFjaXR5OiAwLjciIC8+CisgICAgPHBvbHlnb24g
Y2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIwLjUgMTEuNSAwLjUgMTMuNSA0IDExLjUgNCA5LjUiIHN0
cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0ic3Ry
b2tlZCIgeD0iMTIiIHk9IjEuNSIgd2lkdGg9IjMuNSIgaGVpZ2h0PSIxMiIgZmlsbD0idHJhbnNw
YXJlbnQiIHN0cm9rZT0iYmxhY2siIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9p
bnRzPSIxMiAzLjUgMTIgNS41IDE1LjUgMy41IDE1LjUgMS41IiBzdHJva2U9Im5vbmUiIHN0eWxl
PSJvcGFjaXR5OiAwLjciIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIx
MiA3LjUgMTIgOS41IDE1LjUgNy41IDE1LjUgNS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFj
aXR5OiAwLjciIC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIxMiAxMS41
IDEyIDEzLjUgMTUuNSAxMS41IDE1LjUgOS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFjaXR5
OiAwLjciIC8+CisgICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjUuNSIgeT0iNSIgd2lkdGg9
IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFy
TGVmdC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ2xl
YXJMZWZ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWI0MTA4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1h
Z2VzL0NsZWFyTGVmdC5zdmcKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8cmVjdCBjbGFzcz0i
c3Ryb2tlZCIgeD0iMiIgeT0iMS41IiB3aWR0aD0iNSIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJibGFjayIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9IjIg
My41IDIgNS41IDcgMy41IDcgMS41IiBzdHJva2U9Im5vbmUiIHN0eWxlPSJvcGFjaXR5OiAwLjci
IC8+CisgICAgPHBvbHlnb24gY2xhc3M9ImZpbGxlZCIgcG9pbnRzPSIyIDcuNSAyIDkuNSA3IDcu
NSA3IDUuNSIgc3Ryb2tlPSJub25lIiBzdHlsZT0ib3BhY2l0eTogMC43IiAvPgorICAgIDxwb2x5
Z29uIGNsYXNzPSJmaWxsZWQiIHBvaW50cz0iMiAxMS41IDIgMTMuNSA3IDExLjUgNyA5LjUiIHN0
cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0ic3Ry
b2tlZCIgeD0iOSIgeT0iNSIgd2lkdGg9IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJibGFjayIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyUmlnaHQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NsZWFyUmlnaHQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQzMjExMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ2xlYXJSaWdodC5zdmcKQEAgLTAsMCArMSw5
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmln
aHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw
IDE2IDE2Ij4KKyAgICA8cmVjdCBjbGFzcz0ic3Ryb2tlZCIgeD0iOSIgeT0iMS41IiB3aWR0aD0i
NSIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKyAgICA8cG9seWdv
biBjbGFzcz0iZmlsbGVkIiBwb2ludHM9IjkgMy41IDkgNS41IDE0IDMuNSAxNCAxLjUiIHN0cm9r
ZT0ibm9uZSIgc3R5bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmls
bGVkIiBwb2ludHM9IjkgNy41IDkgOS41IDE0IDcuNSAxNCA1LjUiIHN0cm9rZT0ibm9uZSIgc3R5
bGU9Im9wYWNpdHk6IDAuNyIgLz4KKyAgICA8cG9seWdvbiBjbGFzcz0iZmlsbGVkIiBwb2ludHM9
IjkgMTEuNSA5IDEzLjUgMTQgMTEuNSAxNCA5LjUiIHN0cm9rZT0ibm9uZSIgc3R5bGU9Im9wYWNp
dHk6IDAuNyIgLz4KKyAgICA8cmVjdCBjbGFzcz0ic3Ryb2tlZCIgeD0iMiIgeT0iNSIgd2lkdGg9
IjUiIGhlaWdodD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgLz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Zsb2F0
TGVmdC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRmxv
YXRMZWZ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDMxYjY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1h
Z2VzL0Zsb2F0TGVmdC5zdmcKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgc3Ryb2tlPSJibGFjayI+Cisg
ICAgPHJlY3QgY2xhc3M9InN0cm9rZWQiIHg9IjAuNSIgeT0iMi41IiB3aWR0aD0iNSIgaGVpZ2h0
PSI1IiBmaWxsPSJub25lIiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iNy41IiB5
MT0iMi41IiB4Mj0iMTYiIHkyPSIyLjUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQiIHgx
PSI3LjUiIHkxPSI1IiB4Mj0iMTYiIHkyPSI1IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2Vk
IiB4MT0iNy41IiB5MT0iNy41IiB4Mj0iMTYiIHkyPSI3LjUiIC8+CisgICAgPGxpbmUgY2xhc3M9
InN0cm9rZWQiIHgxPSIwIiB5MT0iMTAiIHgyPSIxNiIgeTI9IjEwIiAvPgorICAgIDxsaW5lIGNs
YXNzPSJzdHJva2VkIiB4MT0iMCIgeTE9IjEyLjUiIHgyPSIxNiIgeTI9IjEyLjUiIC8+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9GbG9hdFJpZ2h0LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9GbG9hdFJpZ2h0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
MTgxYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL0Zsb2F0UmlnaHQuc3ZnCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHN0cm9rZT0i
YmxhY2siPgorICAgIDxyZWN0IGNsYXNzPSJzdHJva2VkIiB4PSIxMC41IiB5PSIyLjUiIHdpZHRo
PSI1IiBoZWlnaHQ9IjUiIGZpbGw9Im5vbmUiIC8+CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQi
IHgxPSIwIiB5MT0iMi41IiB4Mj0iOC41IiB5Mj0iMi41IiAvPgorICAgIDxsaW5lIGNsYXNzPSJz
dHJva2VkIiB4MT0iMCIgeTE9IjUiIHgyPSI4LjUiIHkyPSI1IiAvPgorICAgIDxsaW5lIGNsYXNz
PSJzdHJva2VkIiB4MT0iMCIgeTE9IjcuNSIgeDI9IjguNSIgeTI9IjcuNSIgLz4KKyAgICA8bGlu
ZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAiIHkxPSIxMCIgeDI9IjE2IiB5Mj0iMTAiIC8+CisgICAg
PGxpbmUgY2xhc3M9InN0cm9rZWQiIHgxPSIwIiB5MT0iMTIuNSIgeDI9IjE2IiB5Mj0iMTIuNSIg
Lz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSW1hZ2VzL0ZvbnRTdHlsZUl0YWxpYy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvRm9udFN0eWxlSXRhbGljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMTE2NDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0ZvbnRTdHlsZUl0YWxpYy5zdmcKQEAgLTAs
MCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBD
b3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2
ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0Jv
eD0iMCAwIDE2IDE2IiBmb250LXNpemU9IjkiIGZvbnQtZmFtaWx5PSItYXBwbGUtc3lzdGVtLCBz
YW5zLXNlcmlmIiBmb250LXN0eWxlPSJpdGFsaWMiPgorICAgIDx0ZXh0IGNsYXNzPSJmaWxsZWQi
IHg9Ii0xIiB5PSIxMSI+QWJjPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRm9udFN0eWxlTm9ybWFsLnN2ZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Gb250U3R5bGVOb3JtYWwu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWFmZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRm9u
dFN0eWxlTm9ybWFsLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZvbnQtc2l6ZT0iOSIgZm9udC1m
YW1pbHk9Ii1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiPgorICAgIDx0ZXh0IGNsYXNzPSJmaWxs
ZWQiIHg9Ii0xIiB5PSIxMSI+QWJjPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTWludXMuc3ZnIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWU1NzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpAQCAtMCwwICsx
LDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHly
aWdodCDCqSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZl
cnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIw
IDAgMTMgMTMiPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9
ImJsYWNrIiB4MT0iMS41IiB5MT0iNi41IiB4Mj0iMTEuNSIgeTI9IjYuNSIvPgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4
dEFsaWduQ2VudGVyLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9UZXh0QWxpZ25DZW50ZXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmFiNjViNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduQ2VudGVyLnN2ZwpAQCAtMCwwICsxLDkgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEu
MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYi
IHN0cm9rZT0iYmxhY2siPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0i
MyIgeDI9IjE0LjUiIHkyPSIzIiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMyIg
eTE9IjUuNSIgeDI9IjEyIiB5Mj0iNS41IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4
MT0iMC41IiB5MT0iOCIgeDI9IjE0LjUiIHkyPSI4IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJv
a2VkIiB4MT0iMyIgeTE9IjEwLjUiIHgyPSIxMiIgeTI9IjEwLjUiIC8+CisgICAgPGxpbmUgY2xh
c3M9InN0cm9rZWQiIHgxPSIwLjUiIHkxPSIxMyIgeDI9IjE0LjUiIHkyPSIxMyIgLz4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L1RleHRBbGlnbkp1c3RpZnkuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSW1hZ2VzL1RleHRBbGlnbkp1c3RpZnkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQ1ZTI4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduSnVzdGlmeS5zdmcKQEAgLTAsMCArMSw5
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmln
aHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw
IDE2IDE2IiBzdHJva2U9ImJsYWNrIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAu
NSIgeTE9IjMiIHgyPSIxNC41IiB5Mj0iMyIgLz4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIg
eDE9IjAuNSIgeTE9IjUuNSIgeDI9IjE0LjUiIHkyPSI1LjUiIC8+CisgICAgPGxpbmUgY2xhc3M9
InN0cm9rZWQiIHgxPSIwLjUiIHkxPSI4IiB4Mj0iMTQuNSIgeTI9IjgiIC8+CisgICAgPGxpbmUg
Y2xhc3M9InN0cm9rZWQiIHgxPSIwLjUiIHkxPSIxMC41IiB4Mj0iMTQuNSIgeTI9IjEwLjUiIC8+
CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQiIHgxPSIwLjUiIHkxPSIxMyIgeDI9IjE0LjUiIHky
PSIxMyIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL1RleHRBbGlnbkxlZnQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHRBbGlnbkxlZnQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNjZjc5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduTGVmdC5zdmcKQEAgLTAs
MCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBD
b3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2
ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0Jv
eD0iMCAwIDE2IDE2IiBzdHJva2U9ImJsYWNrIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIg
eDE9IjAuNSIgeTE9IjMiIHgyPSIxNC41IiB5Mj0iMyIgLz4KKyAgICA8bGluZSBjbGFzcz0ic3Ry
b2tlZCIgeDE9IjAuNSIgeTE9IjUuNSIgeDI9IjkuNSIgeTI9IjUuNSIgLz4KKyAgICA8bGluZSBj
bGFzcz0ic3Ryb2tlZCIgeDE9IjAuNSIgeTE9IjgiIHgyPSIxNC41IiB5Mj0iOCIgLz4KKyAgICA8
bGluZSBjbGFzcz0ic3Ryb2tlZCIgeDE9IjAuNSIgeTE9IjEwLjUiIHgyPSI5LjUiIHkyPSIxMC41
IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iMTMiIHgyPSIxNC41
IiB5Mj0iMTMiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0QWxpZ25SaWdodC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduUmlnaHQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTZjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGV4dEFsaWduUmlnaHQuc3Zn
CkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
KzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAt
LT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHZpZXdCb3g9IjAgMCAxNiAxNiIgc3Ryb2tlPSJibGFjayI+CisgICAgPGxpbmUgY2xhc3M9InN0
cm9rZWQiIHgxPSIwLjUiIHkxPSIzIiB4Mj0iMTQuNSIgeTI9IjMiIC8+CisgICAgPGxpbmUgY2xh
c3M9InN0cm9rZWQiIHgxPSI1LjUiIHkxPSI1LjUiIHgyPSIxNC41IiB5Mj0iNS41IiAvPgorICAg
IDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iOCIgeDI9IjE0LjUiIHkyPSI4IiAv
PgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iNS41IiB5MT0iMTAuNSIgeDI9IjE0LjUi
IHkyPSIxMC41IiAvPgorICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMC41IiB5MT0iMTMi
IHgyPSIxNC41IiB5Mj0iMTMiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoLnN2
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
MWM5Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uTGluZVRocm91Z2guc3ZnCkBAIC0wLDAgKzEsNiBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0
IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lv
bj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAx
NiAxNiIgZm9udC1zaXplPSI5IiBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJp
ZiI+CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0iMCIgeT0iMTEuNSI+QWJjPC90ZXh0Pgor
ICAgIDxsaW5lIGNsYXNzPSJzdHJva2VkIiB4MT0iMCIgeTE9IjguNSIgeDI9IjE1LjUiIHkyPSI4
LjUiIHN0cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uT3ZlcmxpbmUuc3ZnIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9u
T3ZlcmxpbmUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzRhMjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9J
bWFnZXMvVGV4dERlY29yYXRpb25PdmVybGluZS5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2IiBmb250
LXNpemU9IjkiIGZvbnQtZmFtaWx5PSItYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmIj4KKyAgICA8
dGV4dCBjbGFzcz0iZmlsbGVkIiB4PSIwIiB5PSIxMS41Ij5BYmM8L3RleHQ+CisgICAgPGxpbmUg
Y2xhc3M9InN0cm9rZWQiIHgxPSIwIiB5MT0iMy41IiB4Mj0iMTUuNSIgeTI9IjMuNSIgc3Ryb2tl
PSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvVGV4dERlY29yYXRpb25VbmRlcmxpbmUuc3ZnIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHREZWNvcmF0aW9uVW5kZXJsaW5l
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk0YWExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Rl
eHREZWNvcmF0aW9uVW5kZXJsaW5lLnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZvbnQtc2l6ZT0i
OSIgZm9udC1mYW1pbHk9Ii1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiPgorICAgIDx0ZXh0IGNs
YXNzPSJmaWxsZWQiIHg9IjAiIHk9IjExLjUiPkFiYzwvdGV4dD4KKyAgICA8bGluZSBjbGFzcz0i
c3Ryb2tlZCIgeDE9IjAiIHkxPSIxMi41IiB4Mj0iMTUuNSIgeTI9IjEyLjUiIHN0cm9rZT0iYmxh
Y2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1RleHRUcmFuc2Zvcm1DYXBpdGFsaXplLnN2ZyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtQ2FwaXRhbGl6ZS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlYzFhZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJh
bnNmb3JtQ2FwaXRhbGl6ZS5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2IiBmb250LXNpemU9IjkiIGZv
bnQtZmFtaWx5PSItYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmIj4KKyAgICA8dGV4dCBjbGFzcz0i
ZmlsbGVkIiB4PSIwIiB5PSIxMS41Ij5BYmM8L3RleHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtTG93
ZXJjYXNlLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9U
ZXh0VHJhbnNmb3JtTG93ZXJjYXNlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZDJkOWRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHRUcmFuc2Zvcm1Mb3dlcmNhc2Uuc3ZnCkBAIC0wLDAgKzEs
NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJp
Z2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVy
c2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAg
MCAxNiAxNiIgZm9udC1zaXplPSI5IiBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgc2Fucy1z
ZXJpZiI+CisgICAgPHRleHQgY2xhc3M9ImZpbGxlZCIgeD0iMC41IiB5PSIxMS41Ij5hYmM8L3Rl
eHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtVXBwZXJjYXNlLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UZXh0VHJhbnNmb3JtVXBwZXJjYXNlLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDRjYTYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RleHRUcmFuc2Zv
cm1VcHBlcmNhc2Uuc3ZnCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZm9udC1zaXplPSI5IiBmb250LWZh
bWlseT0iLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZiI+CisgICAgPHRleHQgY2xhc3M9ImZpbGxl
ZCIgeD0iLTEiIHk9IjExLjUiPkFCQzwvdGV4dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlTm9uZS5zdmcg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVO
b25lLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjg4YTEyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L1Zpc3VhbFN0eWxlTm9uZS5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8bGluZSBjbGFz
cz0ic3Ryb2tlZCIgeDE9IjAiIHkxPSI4IiB4Mj0iMTQiIHkyPSI4IiBzdHJva2U9ImJsYWNrIi8+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDU5OWEzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0
eWxlUHJvcGVydHlMaW5rZWQuc3ZnCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPGNpcmNsZSBj
bGFzcz0iZmlsbGVkIiBjeD0iOCIgY3k9IjgiIHI9IjQiIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5v
bmUiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlVbmxp
bmtlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY0ZDEyZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+Cisg
ICAgPHBhdGggY2xhc3M9ImZpbGxlZCIgZD0iTSAxMCA0IEMgMTYgNCAxNiAxMiAxMCAxMiIgc3Ry
b2tlPSJub25lIiAvPgorICAgIDxwYXRoIGNsYXNzPSJmaWxsZWQiIGQ9Ik0gNiA0IEMgMCA0IDAg
MTIgNiAxMiIgc3Ryb2tlPSJub25lIiAvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggOTdjNmM3My4uNWEwMGNmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMTYyLDYg
KzE2MiwyMCBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRv
a2VuVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlw
ZVRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9UeXBlVHJlZVZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNz
cyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
VmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0LmNzcyI+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVT
ZWxlY3RvclNlY3Rpb24uY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxl
ci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5
bGVUaW1pbmdFZGl0b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5jc3MiPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJy
b3JEcmFnVG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+CkBAIC01NDAsNiArNTU0LDI3IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlz
dWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZFBp
Y2tlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3guanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNl
Y3Rpb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNl
bGVjdG9yVHJlZUl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVVSTElucHV0LmpzIj48L3NjcmlwdD4K
KwogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Bbm5vdGF0b3IuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIu
anMiPjwvc2NyaXB0PgogCkBAIC01NzQsNiArNjA5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U0tleXdvcmRDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKaW5kZXggNDM0OGFmYi4uZTg1OGRi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCkBAIC01NCw3ICs1NCw3
IEBAIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkgPSBmdW5j
dGlvbihwcm9wZXJ0eU5hbWUpCiAgICAgZWxzZSBpZiAoaXNOb3RQcmVmaXhlZCAmJiAoIi13ZWJr
aXQtIiArIHByb3BlcnR5TmFtZSkgaW4gV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5Jbmhlcml0ZWRQcm9wZXJ0aWVzKQogICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1c2goImlu
aGVyaXQiKTsKIAotICAgIGlmIChhY2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdlYkluc3BlY3Rv
ci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSkgewor
ICAgIGlmIChhY2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdlYkluc3BlY3Rvci5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSAmJiBXZWJJbnNwZWN0b3Iu
Q1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKSB7CiAgICAgICAgIGFjY2VwdGVkS2V5
d29yZHMucmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVy
dHlOYW1lc1BsYWNlaG9sZGVyKTsKICAgICAgICAgYWNjZXB0ZWRLZXl3b3JkcyA9IGFjY2VwdGVk
S2V5d29yZHMuY29uY2F0KFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxl
dGlvbnMudmFsdWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCmluZGV4IGE5NGUyN2IuLmYwYWY2YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NS
dWxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NSdWxlLmpzCkBAIC0xNzcsNiArMTc3LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlID0gY2xh
c3MgQ1NTUnVsZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRo
aXMuX21lZGlhTGlzdDsKICAgICB9CiAKKyAgICBnZXQgbWVkaWFUZXh0KCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fbWVkaWFMaXN0Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBsZXQgbWVkaWFUZXh0ID0gIiI7CisgICAgICAgIGZvciAobGV0IG1lZGlhIG9mIHRo
aXMuX21lZGlhTGlzdCkKKyAgICAgICAgICAgIG1lZGlhVGV4dCArPSBtZWRpYS50ZXh0OworCisg
ICAgICAgIHJldHVybiBtZWRpYVRleHQ7CisgICAgfQorCiAgICAgaXNFcXVhbFRvKHJ1bGUpCiAg
ICAgewogICAgICAgICBpZiAoIXJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpz
CmluZGV4IDk0MDc4Y2YuLmE0ZTk1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9u
LmpzCkBAIC00Myw2ICs0Myw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0g
Y2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHRo
aXMuX3BlbmRpbmdQcm9wZXJ0aWVzID0gW107CiAgICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZU1h
cCA9IHt9OwogCisgICAgICAgIHRoaXMuX2luaXRpYWxUZXh0ID0gdGV4dDsKKyAgICAgICAgdGhp
cy5faGFzTW9kaWZpZWRJbml0aWFsVGV4dCA9IGZhbHNlOworCiAgICAgICAgIHRoaXMudXBkYXRl
KHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHRydWUpOwogICAgIH0KIApA
QCAtMTgzLDkgKzE4NiwyNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb24gZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICBpZiAo
dGhpcy5fdGV4dCA9PT0gdGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB2YXIg
bW9kaWZpZWQgPSB0ZXh0ICE9PSB0aGlzLl9pbml0aWFsVGV4dDsKKyAgICAgICAgaWYgKG1vZGlm
aWVkICE9PSB0aGlzLl9oYXNNb2RpZmllZEluaXRpYWxUZXh0KSB7CisgICAgICAgICAgICB0aGlz
Ll9oYXNNb2RpZmllZEluaXRpYWxUZXh0ID0gbW9kaWZpZWQ7CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5F
dmVudC5Jbml0aWFsVGV4dE1vZGlmaWVkKTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX25v
ZGVTdHlsZXMuY2hhbmdlU3R5bGVUZXh0KHRoaXMsIHRleHQpOwogICAgIH0KIAorICAgIHJlc2V0
VGV4dCgpCisgICAgeworICAgICAgICB0aGlzLnRleHQgPSB0aGlzLl9pbml0aWFsVGV4dDsKKyAg
ICB9CisKKyAgICBnZXQgbW9kaWZpZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2hh
c01vZGlmaWVkSW5pdGlhbFRleHQ7CisgICAgfQorCiAgICAgZ2V0IHByb3BlcnRpZXMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7CkBAIC0yNjAsMTYgKzI3OSw3MCBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb24gZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICByZXR1cm4gbmV3UHJvcGVydHk7CiAg
ICAgfQogCisgICAgZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKGN1c3RvbVNlbGVjdG9yKQorICAgIHsK
KyAgICAgICAgbGV0IHJ1bGVUZXh0ID0gIiI7CisgICAgICAgIGlmICghdGhpcy5fb3duZXJSdWxl
KSB7CisgICAgICAgICAgICBpZiAoY3VzdG9tU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgcnVs
ZVRleHQgPSBjdXN0b21TZWxlY3RvciArICIgIiArIHRoaXMuX2dlbmVyYXRlQ1NTUnVsZVN0cmlu
Z0JvZHkoKTsKKworICAgICAgICAgICAgcmV0dXJuIHJ1bGVUZXh0OworICAgICAgICB9CisKKyAg
ICAgICAgbGV0IG1lZGlhUXVlcmllc0NvdW50ID0gMDsKKyAgICAgICAgbGV0IG1lZGlhTGlzdCA9
IHRoaXMuX293bmVyUnVsZS5tZWRpYUxpc3Q7CisgICAgICAgIGlmIChtZWRpYUxpc3QubGVuZ3Ro
KSB7CisgICAgICAgICAgICBtZWRpYVF1ZXJpZXNDb3VudCA9IG1lZGlhTGlzdC5sZW5ndGg7CisK
KyAgICAgICAgICAgIGZvciAobGV0IGkgPSBtZWRpYVF1ZXJpZXNDb3VudCAtIDE7IGkgPj0gMDsg
LS1pKQorICAgICAgICAgICAgICAgIHJ1bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQobWVkaWFRdWVy
aWVzQ291bnQgLSBpIC0gMSkgKyAiQG1lZGlhICIgKyBtZWRpYUxpc3RbaV0udGV4dCArICIge1xu
IjsKKyAgICAgICAgfQorCisgICAgICAgIHJ1bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQobWVkaWFR
dWVyaWVzQ291bnQpOworICAgICAgICBydWxlVGV4dCArPSBjdXN0b21TZWxlY3RvciB8fCB0aGlz
Ll9vd25lclJ1bGUuc2VsZWN0b3JUZXh0OworICAgICAgICBydWxlVGV4dCArPSAiICIgKyB0aGlz
Ll9nZW5lcmF0ZUNTU1J1bGVTdHJpbmdCb2R5KG1lZGlhUXVlcmllc0NvdW50KTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IG1lZGlhUXVlcmllc0NvdW50OyBpID4gMDsgLS1pKQorICAgICAgICAgICAg
cnVsZVRleHQgKz0gIlxuIiArICIgICAgIi5yZXBlYXQoaSAtIDEpICsgIn0iOworCisgICAgICAg
IHJldHVybiBydWxlVGV4dDsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGdldCBu
b2RlU3R5bGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlU3R5bGVzOwogICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9nZW5lcmF0ZUNTU1J1bGVTdHJpbmdCb2R5KGlu
ZGVudENvdW50ID0gMCwgaW5kZW50Rmlyc3RMaW5lKQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxl
VGV4dCA9ICIiOworICAgICAgICBpZiAoaW5kZW50Rmlyc3RMaW5lKQorICAgICAgICAgICAgc3R5
bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQoaW5kZW50Q291bnQpOworCisgICAgICAgIHN0eWxlVGV4
dCArPSAie1xuIjsKKyAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgb2YgdGhpcy5fcHJvcGVydGll
cykgeworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmFub255bW91cykKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQoaW5k
ZW50Q291bnQgKyAxKSArIHByb3BlcnR5LnRleHQudHJpbSgpOworCisgICAgICAgICAgICBpZiAo
IXN0eWxlVGV4dC5lbmRzV2l0aCgiOyIpKQorICAgICAgICAgICAgICAgIHN0eWxlVGV4dCArPSAi
OyI7CisKKyAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiXG4iOworICAgICAgICB9CisKKyAgICAg
ICAgc3R5bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQoaW5kZW50Q291bnQpICsgIn0iOworICAgICAg
ICByZXR1cm4gc3R5bGVUZXh0OworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uLkV2ZW50ID0gewotICAgIFByb3BlcnRpZXNDaGFuZ2VkOiAiY3NzLXN0eWxlLWRl
Y2xhcmF0aW9uLXByb3BlcnRpZXMtY2hhbmdlZCIKKyAgICBQcm9wZXJ0aWVzQ2hhbmdlZDogImNz
cy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWNoYW5nZWQiLAorICAgIEluaXRpYWxUZXh0
TW9kaWZpZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24taW5pdGlhbC10ZXh0LW1vZGlmaWVkIgog
fTsKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZSA9IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5kZXggYjNlMGQwNy4uMmM4Nzhm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTQ0
OSw0OSArNDQ5LDEzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9
IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uIGV4dGVuCiAgICAgICAgIH0KIAogICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBS
dWxlIiksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNv
cHlUZXh0KHRoaXMuX2dlbmVyYXRlQ1NTUnVsZVN0cmluZygpKTsKKyAgICAgICAgICAgIGxldCBz
ZWxlY3RvclRleHQgPSAhdGhpcy5fc3R5bGUub3duZXJSdWxlID8gdGhpcy5fY3VycmVudFNlbGVj
dG9yVGV4dCA6IG51bGw7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRl
eHQodGhpcy5fc3R5bGUuZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKHNlbGVjdG9yVGV4dCkpOwogICAg
ICAgICB9LmJpbmQodGhpcykpOwogCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9
CiAKLSAgICBfZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHZhciBudW1N
ZWRpYVF1ZXJpZXMgPSAwOwotICAgICAgICB2YXIgc3R5bGVUZXh0ID0gIiI7Ci0KLSAgICAgICAg
aWYgKHRoaXMuX3N0eWxlLm93bmVyUnVsZSkgewotICAgICAgICAgICAgdmFyIG1lZGlhTGlzdCA9
IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5tZWRpYUxpc3Q7Ci0gICAgICAgICAgICBpZiAobWVkaWFM
aXN0Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgIG51bU1lZGlhUXVlcmllcyA9IG1lZGlhTGlz
dC5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbnVtTWVkaWFRdWVyaWVz
IC0gMTsgaSA+PSAwOyAtLWkpCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAg
ICIucmVwZWF0KG51bU1lZGlhUXVlcmllcyAtIGkgLSAxKSArICJAbWVkaWEgIiArIG1lZGlhTGlz
dFtpXS50ZXh0ICsgIiB7XG4iOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdHlsZVRl
eHQgKz0gIiAgICAiLnJlcGVhdChudW1NZWRpYVF1ZXJpZXMpICsgdGhpcy5fc3R5bGUub3duZXJS
dWxlLnNlbGVjdG9yVGV4dDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHlsZVRleHQg
Kz0gdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRleHRDb250ZW50OwotCi0gICAgICAgIHN0eWxlVGV4
dCArPSAiIHtcbiI7Ci0KLSAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgdGhpcy5fc3R5bGUu
dmlzaWJsZVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiICAgICIucmVw
ZWF0KG51bU1lZGlhUXVlcmllcyArIDEpICsgcHJvcGVydHkudGV4dC50cmltKCk7Ci0KLSAgICAg
ICAgICAgIGlmICghc3R5bGVUZXh0LmVuZHNXaXRoKCI7IikpCi0gICAgICAgICAgICAgICAgc3R5
bGVUZXh0ICs9ICI7IjsKLQotICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICJcbiI7Ci0gICAgICAg
IH0KLQotICAgICAgICBmb3IgKHZhciBpID0gbnVtTWVkaWFRdWVyaWVzOyBpID4gMDsgLS1pKQot
ICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICIgICAgIi5yZXBlYXQoaSkgKyAifVxuIjsKLQotICAg
ICAgICBzdHlsZVRleHQgKz0gIn0iOwotCi0gICAgICAgIHJldHVybiBzdHlsZVRleHQ7Ci0gICAg
fQotCiAgICAgX3RvZ2dsZVJ1bGVPbk9mZigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFz
SW52YWxpZFNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvci5qcwppbmRleCAzODc2NjNmLi45Y2U4YTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtODgwLDcgKzg4MCw3IEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAgICAgICAvLyBMb29rIGZvciBjb2xvciBzdHJpbmdz
IGFuZCBhZGQgc3dhdGNoZXMgaW4gZnJvbnQgb2YgdGhlbS4KICAgICAgICAgICAgIGNyZWF0ZUNv
ZGVNaXJyb3JDb2xvclRleHRNYXJrZXJzKHRoaXMuX2NvZGVNaXJyb3IsIHJhbmdlLCBmdW5jdGlv
bihtYXJrZXIsIGNvbG9yLCBjb2xvclN0cmluZykgewogICAgICAgICAgICAgICAgIHZhciBzd2F0
Y2hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAg
ICAgIHN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRv
IG9wZW4gYSBjb2xvcnBpY2tlci4gU2hpZnQtY2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdC4i
KTsKKyAgICAgICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDbGljayB0byBzZWxlY3QgYSBjb2xvci4gU2hpZnQtY2xpY2sgdG8gc3dpdGNoIGNv
bG9yIGZvcm1hdHMuIik7CiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQ29sb3JTd2F0Y2hF
bGVtZW50U3R5bGVDbGFzc05hbWU7CiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NvbG9yU3dhdGNoQ2xpY2tlZC5iaW5kKHRoaXMp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4
IDZmZDIzZDAuLjI4MjgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKQEAgLTY4LDEyICs2OCwxMyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAog
CiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CiAgICAgICAgIHRoaXMuX3J1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwodGhpcyk7CisgICAgICAgIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKIAogICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdl
LCB0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQsIHRo
aXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgdGhpcy5fcGFuZWxzID0gW3Ro
aXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWxdOwotICAgICAgICB0aGlzLl9wYW5lbE5hdmlnYXRpb25JbmZvID0gW3RoaXMuX2NvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8sIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxz
UGFuZWwubmF2aWdhdGlvbkluZm9dOworICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhp
cy5fdmlzdWFsU3R5bGVEZXRhaWxzUGFuZWxdOworICAgICAgICB0aGlzLl9wYW5lbE5hdmlnYXRp
b25JbmZvID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8s
IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8sIHRoaXMuX3Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvXTsKIAogICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0ZWRTZWN0aW9uU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1z
ZWxlY3RlZC1zdHlsZS1kZXRhaWxzLXBhbmVsIiwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5l
bC5uYXZpZ2F0aW9uSW5mby5pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcuanMKaW5kZXggOGU3ODAxNC4uMDZhOWFmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCkBAIC0xNzUsNiArMTc1LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3IGV4dGVuZHMKICAgICAgICAgICAgIGlmIChpID09PSB0aGlzLl9zZWxlY3RlZElu
ZGV4KQogICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU2VsZWN0ZWRJdGVtU3R5bGVDbGFzc05hbWUp
OwogICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChpdGVtRWxl
bWVudCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5f
ZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zT25JdGVtQ3JlYXRlZCA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNP
bkl0ZW1DcmVhdGVkKGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uc1tpXSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKaW5kZXggODRiM2EzOS4uZDhhMjRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb24uanMKQEAgLTYxLDYgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAKICAgICAgICAgdGhpcy5fY29sbGFwc2VkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNlY3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0
Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKTsKICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9j
b2xsYXBzZWRTZXR0aW5nLnZhbHVlOworICAgICAgICB0aGlzLl9leHBhbmRlZEJ5VXNlciA9IGZh
bHNlOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTE1LDYgKzExNiwxMSBAQCBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2dyb3Vwc1tpXS5lbGVtZW50KTsKICAgICB9CiAKKyAgICBnZXQgZXhwYW5kZWRC
eVVzZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkQnlVc2VyOworICAg
IH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9oZWFkZXJFbGVtZW50Q2xpY2tlZChldmVudCkK
QEAgLTEyMiw3ICsxMjgsOSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBE
ZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKGV2
ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQodGhpcy5fb3B0aW9uc0VsZW1lbnQpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFw
c2VkOworICAgICAgICB2YXIgY29sbGFwc2VkID0gdGhpcy5jb2xsYXBzZWQ7CisgICAgICAgIHRo
aXMuY29sbGFwc2VkID0gIWNvbGxhcHNlZDsKKyAgICAgICAgdGhpcy5fZXhwYW5kZWRCeVVzZXIg
PSBjb2xsYXBzZWQ7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TbGlkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TbGlkZXIuanMKaW5kZXggMTU0NzcxZi4uNGQ1YzM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NsaWRlci5qcwpA
QCAtMzYsNyArMzYsNyBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyID0gY2xhc3MgU2xpZGVyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3ZhbHVlID0gMDsKICAgICAg
ICAgdGhpcy5fa25vYlggPSAwOwotICAgICAgICB0aGlzLl9fbWF4WCA9IDA7CisgICAgICAgIHRo
aXMuX21heFggPSAwOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcyk7CiAgICAgfQpAQCAtNjAsMTUgKzYwLDI3IEBAIFdlYkluc3BlY3Rv
ci5TbGlkZXIgPSBjbGFzcyBTbGlkZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKLQotICAgICAgICB0aGlzLl9rbm9iWCA9IE1hdGgu
cm91bmQodmFsdWUgKiB0aGlzLl9tYXhYKTsKLSAgICAgICAgdGhpcy5fa25vYi5zdHlsZS53ZWJr
aXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRlM2QoIiArIHRoaXMuX2tub2JYICsgInB4LCAwLCAwKSI7
CisgICAgICAgIHRoaXMua25vYlggPSB2YWx1ZTsKIAogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0
ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5zbGlkZXJWYWx1ZURpZENoYW5nZSA9PT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuc2xpZGVyVmFsdWVEaWRDaGFuZ2UodGhp
cywgdmFsdWUpOwogICAgIH0KIAorICAgIHNldCBrbm9iWCh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2tub2JYID0gTWF0aC5yb3VuZCh2
YWx1ZSAqIHRoaXMubWF4WCk7CisgICAgICAgIHRoaXMuX2tub2Iuc3R5bGUud2Via2l0VHJhbnNm
b3JtID0gInRyYW5zbGF0ZTNkKCIgKyB0aGlzLl9rbm9iWCArICJweCwgMCwgMCkiOworICAgIH0K
KworICAgIGdldCBtYXhYKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tYXhYIDw9IDAgJiYg
ZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLl9lbGVtZW50KSkKKyAgICAgICAgICAgIHRoaXMu
X21heFggPSBNYXRoLm1heCh0aGlzLl9lbGVtZW50Lm9mZnNldFdpZHRoIC0gTWF0aC5jZWlsKFdl
Ykluc3BlY3Rvci5TbGlkZXIuS25vYldpZHRoIC8gMiksIDApOworCisgICAgICAgIHJldHVybiB0
aGlzLl9tYXhYOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgaGFuZGxlRXZlbnQo
ZXZlbnQpCkBAIC05MSw3ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyID0gY2xhc3MgU2xp
ZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIF9oYW5kbGVNb3VzZWRvd24oZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9rbm9iKQotICAg
ICAgICAgICAgdGhpcy52YWx1ZSA9ICh0aGlzLl9sb2NhbFBvaW50Rm9yRXZlbnQoZXZlbnQpLngg
LSAzKSAvIHRoaXMuX21heFg7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gKHRoaXMuX2xvY2Fs
UG9pbnRGb3JFdmVudChldmVudCkueCAtIDMpIC8gdGhpcy5tYXhYOwogCiAgICAgICAgIHRoaXMu
X3N0YXJ0S25vYlggPSB0aGlzLl9rbm9iWDsKICAgICAgICAgdGhpcy5fc3RhcnRNb3VzZVggPSB0
aGlzLl9sb2NhbFBvaW50Rm9yRXZlbnQoZXZlbnQpLng7CkBAIC0xMDUsOSArMTE3LDkgQEAgV2Vi
SW5zcGVjdG9yLlNsaWRlciA9IGNsYXNzIFNsaWRlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICBfaGFuZGxlTW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGR4ID0g
dGhpcy5fbG9jYWxQb2ludEZvckV2ZW50KGV2ZW50KS54IC0gdGhpcy5fc3RhcnRNb3VzZVg7Ci0g
ICAgICAgIHZhciB4ID0gTWF0aC5tYXgoTWF0aC5taW4odGhpcy5fc3RhcnRLbm9iWCArIGR4LCB0
aGlzLl9tYXhYKSwgMCk7CisgICAgICAgIHZhciB4ID0gTWF0aC5tYXgoTWF0aC5taW4odGhpcy5f
c3RhcnRLbm9iWCArIGR4LCB0aGlzLm1heFgpLCAwKTsKIAotICAgICAgICB0aGlzLnZhbHVlID0g
eCAvIHRoaXMuX21heFg7CisgICAgICAgIHRoaXMudmFsdWUgPSB4IC8gdGhpcy5tYXhYOwogICAg
IH0KIAogICAgIF9oYW5kbGVNb3VzZXVwKGV2ZW50KQpAQCAtMTI0LDE0ICsxMzYsNiBAQCBXZWJJ
bnNwZWN0b3IuU2xpZGVyID0gY2xhc3MgU2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICAvLyBtYXkgYmUgdHJhbnNmb3JtZWQgdXNpbmcgQ1NTIFRyYW5zZm9ybXMgYW5k
IGludGVyYWN0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgogICAgICAgICByZXR1cm4gd2luZG93Lndl
YmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlKHRoaXMuX2VsZW1lbnQsIG5ldyBXZWJLaXRQ
b2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpKTsKICAgICB9Ci0KLSAgICBnZXQgX21heFgo
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX19tYXhYID09PSAwICYmIGRvY3VtZW50LmJvZHku
Y29udGFpbnModGhpcy5fZWxlbWVudCkpCi0gICAgICAgICAgICB0aGlzLl9fbWF4WCA9IHRoaXMu
X2VsZW1lbnQub2Zmc2V0V2lkdGggLSBNYXRoLmNlaWwoV2ViSW5zcGVjdG9yLlNsaWRlci5Lbm9i
V2lkdGggLyAyKTsKLQotICAgICAgICByZXR1cm4gdGhpcy5fX21heFg7Ci0gICAgfQogfTsKIAog
V2ViSW5zcGVjdG9yLlNsaWRlci5Lbm9iV2lkdGggPSAxMzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXgg
ZDVkMDdjNS4uMGE4MmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTUwNCw2ICs1MDQsMTkgQEAg
V2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBu
b3RoaW5nCiAgICAgfQorCisgICAgZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnRJbmRleCgpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNoaWxk
cmVuW2ldID09PSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAog
V2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIg
PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2ViMDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tl
ci5jc3MKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1w
bGFjZWhvbGRlciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3Itc3dhdGNoIHsKKyAgICBkaXNwbGF5OiBibG9jazsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDIycHg7CisgICAgaGVpZ2h0OiAx
OHB4OworICAgIG1hcmdpbi10b3A6IDFweDsKKyAgICAvKiBNYWtlIGEgY2hlY2tlcmVkIGJhY2tn
cm91bmQgZm9yIHRyYW5zcGFyZW50IGNvbG9ycyB0byBzaG93IGFnYWluc3QuICovCisgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUp
LCBoc2woMCwgMCUsIDgwJSkpLAorICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBo
c2woMCwgMCUsIDgwJSksIGhzbCgwLCAwJSwgODAlKSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
aHNsKDAsIDEwMCUsIDEwMCUpOworICAgIGJhY2tncm91bmQtc2l6ZTogNTAlOworICAgIGJhY2tn
cm91bmQtcG9zaXRpb246IHRvcCBsZWZ0LCBib3R0b20gcmlnaHQ7CisgICAgYmFja2dyb3VuZC1y
ZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xhKDAsIDAlLCAyNSUs
IDAuNCk7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47Cisg
ICAgY3Vyc29yOiBkZWZhdWx0OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC5jb2xvci1zd2F0Y2g6aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAw
JSwgMjUlLCAwLjgpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1
dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5jb2xvci1zd2F0Y2g6YWN0aXZlIHsKKyAgICBib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMjUl
KTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlj
a2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3Itc3dh
dGNoID4gc3BhbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBy
aWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiBpbnB1dCB7CisgICAgbWFyZ2luOiAxcHggMS41cHgg
M3B4IC0zcHg7CisgICAgcGFkZGluZzogMCAzcHggMCA1cHg7CisgICAgYm9yZGVyLXRvcC1yaWdo
dC1yYWRpdXM6IDRweDsKKyAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OworICAg
IGJvcmRlcjogc29saWQgMXB4IGhzbCgwLCAwJSwgODMlKTsKKyAgICBib3JkZXItbGVmdDogbm9u
ZTsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIGZvbnQtc2l6ZTogMTBweDsKK30KKworLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyLm11bHRpcGxl
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LW11bHRpcGxlLXByb3BlcnR5LXBsYWNlaG9sZGVyIHsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0g
MjBweCk7CisgICAgbGVmdDogMThweDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CisgICAgdGV4
dC1hbGlnbjogbGVmdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNjFlYTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUNvbG9yUGlja2VyLmpzCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUNvbG9yUGlja2Vy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBj
b25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJpbnB1dC1jb2xv
ci1waWNrZXIiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fc3dhdGNo
RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xvci1zd2F0Y2giKTsKKyAgICAgICAgdGhpcy5fc3dh
dGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0
IGEgY29sb3IuIFNoaWZ0LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzLiIpOworICAgICAg
ICB0aGlzLl9zd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY29s
b3JTd2F0Y2hDbGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX3N3YXRjaElubmVy
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5f
c3dhdGNoRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQpOworCisg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3dhdGNoRWxlbWVu
dCk7CisKKyAgICAgICAgdGhpcy5fdGV4dElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX3RleHRJbnB1dEVsZW1lbnQuc3BlbGxjaGVj
ayA9IGZhbHNlOworICAgICAgICB0aGlzLl90ZXh0SW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl90ZXh0SW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl90ZXh0SW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5f
dGV4dElucHV0S2V5VXAuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3RleHRJbnB1dEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2hpZGVDb21wbGV0aW9ucy5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0
SW5wdXRFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIodGhpcyk7Cisg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50LkNvbXBsZXRpb25T
ZWxlY3RlZCwgdGhpcy5fY29tcGxldGlvbkNsaWNrZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMu
X2Zvcm1hdENoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JTd2F0Y2go
KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fdGV4dElucHV0RWxlbWVudC52YWx1ZTsKKyAgICB9CisKKyAgICBz
ZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgPT09IHRo
aXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGV4dElucHV0
RWxlbWVudC52YWx1ZSA9IHRoaXMuX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1ZXMoKSA/IG51
bGwgOiB2YWx1ZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JTd2F0Y2goKTsKKyAgICB9CisK
KyAgICBnZXQgcGxhY2Vob2xkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRJ
bnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIpOworICAgIH0KKworICAgIHNl
dCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKHRleHQgJiYgdGV4dCA9PT0g
dGhpcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhp
cy5faGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcygpKQorICAgICAgICAgICAgdGV4dCA9IHRo
aXMuc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LnRleHRDb250ZW50OworCisgICAg
ICAgIHRoaXMuX3RleHRJbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIHRl
eHQgfHwgInRyYW5zcGFyZW50Iik7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgbnVsbDsKKyAgICB9CisKKyAg
ICBnZXQgaGFzQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBs
ZXRpb25Db250cm9sbGVyLmhhc0NvbXBsZXRpb25zOworICAgIH0KKworICAgIHNldCBjb21wbGV0
aW9ucyhjb21wbGV0aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9s
bGVyLmNvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX3VwZGF0ZUNvbG9yU3dhdGNoKCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHRo
aXMuX3RleHRJbnB1dEVsZW1lbnQudmFsdWU7CisgICAgICAgIHRoaXMuX2NvbG9yID0gV2ViSW5z
cGVjdG9yLkNvbG9yLmZyb21TdHJpbmcodmFsdWUgfHwgInRyYW5zcGFyZW50Iik7CisgICAgICAg
IHRoaXMuX3N3YXRjaElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9j
b2xvciA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBfY29sb3JTd2F0Y2hDbGlja2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5fY29sb3I7CisgICAgICAgIGlm
IChldmVudC5zaGlmdEtleSkgeworICAgICAgICAgICAgbGV0IG5leHRGb3JtYXQgPSBjb2xvci5u
ZXh0Rm9ybWF0KCk7CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5leHRGb3JtYXQpOwor
ICAgICAgICAgICAgaWYgKCFuZXh0Rm9ybWF0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgY29sb3IuZm9ybWF0ID0gbmV4dEZvcm1hdDsKKyAgICAgICAgICAgIHRoaXMu
dmFsdWUgPSBjb2xvci50b1N0cmluZygpOworCisgICAgICAgICAgICB0aGlzLl9mb3JtYXRDaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVj
dG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3N3YXRjaEVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkpOworCisgICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29sb3JQaWNrZXI7CisgICAgICAgIGNvbG9yUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5fY29sb3JQ
aWNrZXJDb2xvckRpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgbGV0IHBvcG92ZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7CisgICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNv
bG9yUGlja2VyLmVsZW1lbnQ7CisgICAgICAgIHBvcG92ZXIucHJlc2VudChib3VuZHMucGFkKDIp
LCBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9YXSk7CisKKyAgICAgICAgY29sb3JQaWNrZXIu
Y29sb3IgPSBjb2xvcjsKKyAgICB9CisKKyAgICBfY29sb3JQaWNrZXJDb2xvckRpZENoYW5nZShl
dmVudCkKKyAgICB7CisgICAgICAgIGxldCBmb3JtYXQgPSAhdGhpcy5fZm9ybWF0Q2hhbmdlZCA/
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYIDogbnVsbDsKKyAgICAgICAgdGhpcy52YWx1
ZSA9IGV2ZW50LmRhdGEuY29sb3IudG9TdHJpbmcoZm9ybWF0KTsKKyAgICAgICAgdGhpcy5fdmFs
dWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfY29tcGxldGlvbkNsaWNrZWQoZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQuZGF0YS50ZXh0OworICAgICAgICB0aGlz
Ll92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF90ZXh0SW5wdXRLZXlEb3duKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci52aXNpYmxl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBrZXlDb2RlID0gZXZlbnQua2V5
Q29kZTsKKyAgICAgICAgbGV0IGVudGVyS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0LktleS5FbnRlci5rZXlDb2RlOworICAgICAgICBsZXQgdGFiS2V5Q29kZSA9IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5UYWIua2V5Q29kZTsKKyAgICAgICAgaWYgKGtl
eUNvZGUgPT09IGVudGVyS2V5Q29kZSB8fCBrZXlDb2RlID09PSB0YWJLZXlDb2RlKSB7CisgICAg
ICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuY3VycmVudENv
bXBsZXRpb247CisgICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAg
ICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBsZXQgZXNjYXBlS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0LktleS5Fc2NhcGUua2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVzY2Fw
ZUtleUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2hpZGVDb21wbGV0aW9ucygpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGtleSA9IGV2ZW50LmtleUlk
ZW50aWZpZXI7CisgICAgICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAgICAgIHRoaXMu
X2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIF90ZXh0SW5wdXRLZXlVcCgpCisgICAgeworICAgICAgICB0
aGlzLl9zaG93Q29tcGxldGlvbnNJZkFibGUoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JT
d2F0Y2goKTsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBf
c2hvd0NvbXBsZXRpb25zSWZBYmxlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5oYXNDb21w
bGV0aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgcmVzdWx0ID0gdGhp
cy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZSh0
aGlzLnZhbHVlKSkgeworICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0
LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl90ZXh0SW5wdXRFbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpKTsKKyAgICAgICAgICAgIGlmICghYm91bmRzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuc2hvdyhib3Vu
ZHMsIDIpOworICAgICAgICB9CisgICAgfQorCisgICAgX2hpZGVDb21wbGV0aW9ucygpCisgICAg
eworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oaWRlKCk7CisgICAgfQorCisg
ICAgX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyhkaXNhYmxlZCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3RleHRJbnB1dEVsZW1lbnQudGFiSW5kZXggPSBkaXNhYmxlZCA/ICItMSIg
OiBudWxsOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDRlZjQxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yLmNzcwpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciB7CisgICAg
bWFyZ2luLWJvdHRvbTogNXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciB7CisgICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUp
OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGZvbnQtc2l6ZTogMTFweDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgeworICAgIG1pbi1oZWlnaHQ6IDUxcHg7Cisg
ICAgbWF4LWhlaWdodDogOTRweDsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk1JSk7CisgICAgb3ZlcmZsb3c6IGF1dG87
CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVk
aXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1pdGVtIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxN3B4OworICAgIGxpbmUtaGVpZ2h0OiAxN3B4OworICAg
IG92ZXJmbG93OiBoaWRkZW47Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1s
aXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm50aC1jaGls
ZChvZGQpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnNlbGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMjEzLCA5MiUsIDU1JSkgIWltcG9ydGFudDsKKyAgICBjb2xvcjogaHNsKDAsIDEwMCUs
IDEwMCUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IDptYXRjaGVzKGJ1dHRvbiwg
aW1nKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0g
PiAudGl0bGVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDNweDsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbS5zZWxlY3RlZDpub3Qo
LmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICogeworICAgIGNvbG9yOiB0cmFuc3BhcmVudDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxp
c3QtaXRlbSA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0
b3IgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDNw
eDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogM3B4OworICAgIG1hcmdpbjogMDsKKyAgICBw
YWRkaW5nOiAwOworICAgIGxpbmUtaGVpZ2h0OiAxM3B4OworICAgIGJvcmRlcjogbm9uZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBmb250LWZhbWlseTogaW5oZXJp
dDsKKyAgICBjb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIHotaW5kZXg6IDE7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0
ZW0uZWRpdG9yLWhpZGRlbiA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
aXRlbS1lZGl0b3IgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1pdGVtID4gLnRpdGxlcyA+IC5zdWJ0aXRsZSB7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAg
Y29sb3I6IGhzbCgwLCAwJSwgODMlKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bm90
KC5uby12YWx1ZSkgPiAudGl0bGVzID4gLnN1YnRpdGxlIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgeworICAgIGRpc3Bs
YXk6IGZsZXg7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGhzbCgwLCAwJSwgODMlKTsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzID4gZGl2IHsKKyAgICB3
aWR0aDogMjBweDsKKyAgICBoZWlnaHQ6IDE5cHg7CisgICAgcGFkZGluZzogNHB4OworICAgIGJv
cmRlci1yaWdodDogMXB4IHNvbGlkIGhzbCgwLCAwJSwgODMlKTsKKyAgICAtd2Via2l0LWZpbHRl
cjogb3BhY2l0eSgwLjcpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29u
dHJvbHMgPiAudmlzdWFsLXN0eWxlLXJlbW92ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCB7Cisg
ICAgb3JkZXI6IDI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29t
bWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmIzZjk3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRv
ci5qcwpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBpbnNl
cnROZXdJdGVtc0JlZm9yZVNlbGVjdGVkLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAg
IHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJjb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5faW5zZXJ0
TmV3SXRlbXNCZWZvcmVTZWxlY3RlZCA9IGluc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgfHwg
ZmFsc2U7CisKKyAgICAgICAgbGV0IGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib2wiKTsKKyAgICAgICAgbGlzdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QiKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZChsaXN0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBh
cmF0ZWRLZXl3b3JkcyA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUobGlzdEVsZW1lbnQp
OworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLm9uc2VsZWN0ID0gdGhpcy5f
b25UcmVlSXRlbVNlbGVjdC5iaW5kKHRoaXMpOworCisgICAgICAgIGxldCBjb250cm9sQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRyb2xDb250
YWluZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWNvbnRyb2xzIik7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29u
dHJvbENvbnRhaW5lcik7CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvUGx1
cy5zdmciLCAidmlzdWFsLXN0eWxlLWFkZC1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gYWRkIGEgbmV3IGl0ZW0uIiksIGZ1bmN0aW9uKHdy
YXBwZXIpIHsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9hZGRFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIGNvbnRyb2xDb250YWluZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvTWludXMuc3Zn
IiwgInZpc3VhbC1zdHlsZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIHJlbW92ZSB0aGUgc2VsZWN0ZWQgaXRlbS4iKSwgZnVu
Y3Rpb24od3JhcHBlcikgeworICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkLmJpbmQodGhp
cykpOworICAgICAgICAgICAgY29udHJvbENvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyKTsK
KyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNl
dCBzZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIGxldCBzZWxl
Y3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRy
ZWVFbGVtZW50OworICAgICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoIm5vLXZhbHVlIiwgIXRleHQgfHwgIXRleHQubGVuZ3RoKTsKKyAgICAgICAgc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5tYWluVGl0bGUgPSB0ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURp
ZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGZvciAobGV0IHRyZWVJ
dGVtIG9mIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuY2hpbGRyZW4pIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl90cmVlSXRlbUlzRW1wdHkodHJlZUl0ZW0pKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKQorICAgICAgICAgICAg
ICAgIHZhbHVlICs9ICIsICI7CisKKyAgICAgICAgICAgIGxldCB0ZXh0ID0gdHJlZUl0ZW0ubWFp
blRpdGxlOworICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9tb2RpZnlDb21tYVNlcGFyYXRl
ZEtleXdvcmQgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRoaXMuX21v
ZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0ZXh0KTsKKworICAgICAgICAgICAgdmFsdWUgKz0g
dGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBz
ZXQgdmFsdWUoY29tbWFTZXBhcmF0ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChjb21tYVNl
cGFyYXRlZFZhbHVlICYmIGNvbW1hU2VwYXJhdGVkVmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5y
ZW1vdmVDaGlsZHJlbigpOworICAgICAgICBpZiAoIWNvbW1hU2VwYXJhdGVkVmFsdWUgfHwgIWNv
bW1hU2VwYXJhdGVkVmFsdWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbGV0IHZhbHVlcyA9IGNvbW1hU2VwYXJhdGVkVmFsdWUu
c3BsaXQoL1xzKixccyooPyFbXlwoXSpcKSkvKTsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Yg
dmFsdWVzKQorICAgICAgICAgICAgdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVl
KTsKKworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuWzBdLnNl
bGVjdCh0cnVlKTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSB8fCBudWxsOworICAgIH0KKworICAgIC8vIFByaXZh
dGUKKworICAgIF9vblRyZWVJdGVtU2VsZWN0KGl0ZW0sIHNlbGVjdGVkQnlVc2VyKQorICAgIHsK
KyAgICAgICAgdGhpcy5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmRzKCk7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCB7dGV4
dDogaXRlbS5tYWluVGl0bGV9KTsKKyAgICB9CisKKyAgICBfdHJlZUl0ZW1Jc0VtcHR5KGl0ZW0p
CisgICAgeworICAgICAgICByZXR1cm4gIWl0ZW0uX21haW5UaXRsZSB8fCAhaXRlbS5fbWFpblRp
dGxlLmxlbmd0aDsKKyAgICB9CisKKyAgICBfYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQo
KQorICAgIHsKKyAgICAgICAgbGV0IG5ld0l0ZW0gPSB0aGlzLl9hZGRDb21tYVNlcGFyYXRlZEtl
eXdvcmQobnVsbCwgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVt
ZW50SW5kZXgpOworICAgICAgICBuZXdJdGVtLnN1YnRpdGxlID0gIigiICsgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlIikgKyAiKSI7
CisgICAgICAgIG5ld0l0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby12YWx1ZSIpOworICAg
ICAgICBuZXdJdGVtLnNlbGVjdCh0cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG5ld0l0ZW07
CisgICAgfQorCisgICAgX3JlbW92ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAg
ICB7CisgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29tbWFTZXBhcmF0
ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAgICB0aGlzLl9yZW1vdmVDb21t
YVNlcGFyYXRlZEtleXdvcmQoc2VsZWN0ZWRUcmVlRWxlbWVudCk7CisgICAgfQorCisgICAgX3Jl
bW92ZUVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkcygpCisgICAgeworICAgICAgICBmb3IgKGxl
dCB0cmVlSXRlbSBvZiB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuKSB7Cisg
ICAgICAgICAgICBpZiAoIXRoaXMuX3RyZWVJdGVtSXNFbXB0eSh0cmVlSXRlbSkgfHwgdHJlZUl0
ZW0uc2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRy
ZWVJdGVtLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVDb21tYVNlcGFyYXRl
ZEtleXdvcmQodHJlZUl0ZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgX2FkZENvbW1hU2Vw
YXJhdGVkS2V5d29yZCh2YWx1ZSwgaW5kZXgpCisgICAgeworICAgICAgICBsZXQgdmFsdWVFbGVt
ZW50ID0gdGhpcy5fY3JlYXRlTmV3TGlzdEl0ZW0odmFsdWUpOworICAgICAgICBsZXQgaW5kZXhJ
c1NldCA9ICFpc05hTihpbmRleCk7CisgICAgICAgIGlmIChpbmRleElzU2V0KSB7CisgICAgICAg
ICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmluc2VydENoaWxkKHZhbHVlRWxlbWVu
dCwgaW5kZXhJc1NldCA/IGluZGV4ICsgIXRoaXMuX2luc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0
ZWQgOiAwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRl
ZEtleXdvcmRzLmFwcGVuZENoaWxkKHZhbHVlRWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIHZh
bHVlRWxlbWVudDsKKyAgICB9CisKKyAgICBfcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRy
ZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnJlbW92ZUNo
aWxkKHRyZWVFbGVtZW50KTsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdv
cmRzLmNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRv
ci5FdmVudC5Ob1JlbWFpbmluZ1RyZWVJdGVtcyk7CisKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRD
aGFuZ2UoKTsKKyAgICB9CisKKyAgICBfY3JlYXRlTmV3TGlzdEl0ZW0odmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkxpc3RJdGVtQ2xh
c3NOYW1lLCB2YWx1ZSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29t
bWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkxpc3RJdGVtQ2xhc3NOYW1lID0gInZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtIjsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50ID0geworICAgIFRyZWVJdGVtU2Vs
ZWN0ZWQ6ICJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yLXRyZWUt
aXRlbS1zZWxlY3RlZCIsCisgICAgTm9SZW1haW5pbmdUcmVlSXRlbXM6ICJ2aXN1YWwtc3R5bGUt
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yLW5vLXJlbWFpbmluZy10cmVlLWl0ZW1zIgor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMmU5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5jc3MKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zaWRlYmFyID4gLnBhbmVsLmRl
dGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rp
b24gPiAuaGVhZGVyIHsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0
YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiA1cHg7CisgICAgd2lkdGg6IDE1cHg7
CisgICAgaGVpZ2h0OiAxNXB4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY2FudmFz
KG5hdmlnYXRpb24taXRlbS1jbGVhci1sb2ctbm9ybWFsKTsKKyAgICBiYWNrZ3JvdW5kLXNpemU6
IDE1cHggMTVweDsKKyAgICAtd2Via2l0LWZpbHRlcjogb3BhY2l0eSgwLjcpOworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uLmNvbGxhcHNlZCA+IC5oZWFkZXIgPiAudmlzdWFsLXN0eWxlLXNl
Y3Rpb24tY2xlYXIsCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFs
ID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uOm5vdCgubW9kaWZpZWQpID4gLmhl
YWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRh
aWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5oZWFkZXIgPiBzcGFuIHsKKyAgICBkaXNw
bGF5OiBmbGV4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRl
ciA+IHNwYW46OmFmdGVyIHsKKyAgICB3aWR0aDogN3B4OworICAgIGhlaWdodDogN3B4OworICAg
IG1hcmdpbjogNHB4IDZweDsKKyAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogaHNsKDIxMiwgOTIlLCA1NCUpOworICAgIC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5
KDAuNSk7CisgICAgY29udGVudDogIiI7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAu
Y29udGVudCB7CisgICAgbWFyZ2luLXRvcDogNXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0
aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyB7CisgICAgZGlzcGxheTogZmxleDsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNl
Y3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3c6bGFzdC1jaGls
ZCB7CisgICAgcGFkZGluZy1ib3R0b206IDNweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0
YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlv
biA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cudmlzdWFsLXN0eWxlLXNlcGFyYXRlZC1yb3cgewor
ICAgIGJvcmRlci1ib3R0b206IDAuNXB4IHNvbGlkIGhzbCgwLCAwJSwgODMlKTsKKyAgICBtYXJn
aW4tYm90dG9tOiA1cHg7CisgICAgcGFkZGluZy1ib3R0b206IDJweDsKK30KKworLnNpZGViYXIg
PiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRl
dGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgeworICAgIHdp
ZHRoOiA1NXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3Vw
ID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyOm5vdCgubGF5b3V0LXJl
dmVyc2VkKTpsYXN0LWNoaWxkIHsKKyAgICBtYXJnaW4tcmlnaHQ6IDExcHg7Cit9CisKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWls
cy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pIHsKKyAgICAtd2Vi
a2l0LWZpbHRlcjogb3BhY2l0eSgwLjUpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQor
Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4g
LmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSBpbnB1
dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNTI1
ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMCwwICsxLDExMjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBW
aXN1YWxTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQ
YW5lbAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIo
ZGVsZWdhdGUsICJ2aXN1YWwiLCAidmlzdWFsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHls
ZXMgXHUyMDE0IFZpc3VhbCIpKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucHJvcGVydHlSZWZl
cmVuY2VJbmZvVGVtcCA9IHt9OworICAgICAgICB0aGlzLl9jdXJyZW50U3R5bGUgPSBudWxsOwor
ICAgICAgICB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSA9IGZhbHNlOworCisgICAgICAgIHRo
aXMuX3NlY3Rpb25zID0ge307CisgICAgICAgIHRoaXMuX2dyb3VwcyA9IHt9OworICAgICAgICB0
aGlzLl9rZXl3b3JkcyA9IHt9OworICAgICAgICB0aGlzLl91bml0cyA9IHt9OworICAgICAgICB0
aGlzLl9hdXRvY29tcGxldGlvblByb3BlcnR5RWRpdG9ycyA9IHt9OworCisgICAgICAgIHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzID0gWyJJbmhlcml0IiwgIkluaXRpYWwiXTsKKyAgICAgICAgdGhp
cy5fa2V5d29yZHMuYm94TW9kZWwgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJB
dXRvIl0pOworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSA9IHsKKyAgICAgICAg
ICAgIGJhc2ljOiB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb25lIiwgIkhpZGRl
biIsICJTb2xpZCJdKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkRhc2hlZCIsICJEb3R0ZWQi
LCAiRG91YmxlIiwgIkdyb292ZSIsICJIaWRkZW4iLCAiSW5zZXQiLCAiTm9uZSIsICJPdXRzZXQi
LCAiUmlkZ2UiXQorICAgICAgICB9OworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0
aCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk1lZGl1bSIsICJUaGljayIsICJU
aGluIl0pOworCisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQgPSB7Cisg
ICAgICAgICAgICBiYXNpYzogWyJweCIsICJlbSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsi
Y2giLCAiY20iLCAiZXgiLCAiaW4iLCAibW0iLCAicGMiLCAicHQiLCAicmVtIiwgInZoIiwgInZ3
IiwgInZtYXgiLCAidm1pbiJdCisgICAgICAgIH07CisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1
bHRzID0geworICAgICAgICAgICAgYmFzaWM6IFsiJSJdLmNvbmNhdCh0aGlzLl91bml0cy5kZWZh
dWx0c1NhbnNQZXJjZW50LmJhc2ljKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiB0aGlzLl91bml0
cy5kZWZhdWx0c1NhbnNQZXJjZW50LmFkdmFuY2VkCisgICAgICAgIH07CisKKyAgICAgICAgLy8g
U2VsZWN0b3IgU2VjdGlvbgorICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uKHRoaXMpOworICAgICAgICB0aGlz
Ll9zZWxlY3RvclNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVTZWxlY3RvclNlY3Rpb24uRXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlzLl91cGRhdGVTZWN0
aW9ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TdHlsZVRl
eHRDaGFuZ2VkLCB0aGlzLl9wcmVwYXJlRm9yQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvclNlY3Rpb24uZWxlbWVudCk7CisKKyAg
ICAgICAgLy8gTGF5b3V0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJk
aXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNwbGF5IikpOworICAgICAgICB0aGlz
Ll9nZW5lcmF0ZVNlY3Rpb24oInBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3Np
dGlvbiIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbG9hdCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRmxvYXQgYW5kIENsZWFyIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0
ZVNlY3Rpb24oImRpbWVuc2lvbnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVuc2lvbnMi
KSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigibWFyZ2luIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNYXJnaW4iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigicGFk
ZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFkZGluZyIpKTsKKyAgICAgICAgdGhpcy5f
Z2VuZXJhdGVTZWN0aW9uKCJmbGV4Ym94IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbGV4Ym94
IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmxheW91dCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24oImxheW91dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0Iiks
IFt0aGlzLl9ncm91cHMuZGlzcGxheS5zZWN0aW9uLCB0aGlzLl9ncm91cHMucG9zaXRpb24uc2Vj
dGlvbiwgdGhpcy5fZ3JvdXBzLmZsb2F0LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25z
LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5tYXJnaW4uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnBhZGRp
bmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsZXhib3guc2VjdGlvbl0pOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmxheW91dC5lbGVtZW50KTsKKwor
ICAgICAgICAvLyBUZXh0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0
ZXh0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhp
cy5fZ2VuZXJhdGVTZWN0aW9uKCJmb250IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250Iikp
OworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQtc3BhY2luZyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU3BhY2luZyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9u
KCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93IikpOworCisgICAg
ICAgIHRoaXMuX3NlY3Rpb25zLnRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
KCJ0ZXh0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUZXh0IiksIFt0aGlzLl9ncm91cHMudGV4
dFN0eWxlLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mb250LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy50
ZXh0U3BhY2luZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMudGV4dFNoYWRvdy5zZWN0aW9uXSk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMudGV4dC5lbGVt
ZW50KTsKKworICAgICAgICAvLyBCYWNrZ3JvdW5kIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVTZWN0aW9uKCJiYWNrZ3JvdW5kLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3JkZXIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJvcmRlciIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9u
KCJvdXRsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRsaW5lIikpOworICAgICAgICB0
aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNoYWRvdyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYmFja2dyb3VuZCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQmFja2dyb3VuZCIpLCBbdGhpcy5fZ3JvdXBzLmJhY2tncm91bmRTdHlsZS5zZWN0aW9u
LCB0aGlzLl9ncm91cHMuYm9yZGVyLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5vdXRsaW5lLnNlY3Rp
b24sIHRoaXMuX2dyb3Vwcy5ib3hTaGFkb3cuc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmJhY2tncm91bmQuZWxlbWVudCk7CisKKyAg
ICAgICAgLy8gQW5pbWF0aW9uIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9u
KCJ0cmFuc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2l0aW9uIikpOworCisg
ICAgICAgIHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oImFuaW1hdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0aW9uIiks
IFt0aGlzLl9ncm91cHMudHJhbnNpdGlvbi5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMuYW5pbWF0aW9uLmVsZW1lbnQpOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgcmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkKKyAgICB7
CisgICAgICAgIGlmIChzaWduaWZpY2FudENoYW5nZSB8fCB0aGlzLl9mb3JjZU5leHRTdHlsZVVw
ZGF0ZSkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JTZWN0aW9uLnVwZGF0ZSh0aGlzLl9u
b2RlU3R5bGVzKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlY3Rpb25zKCk7CisgICAgICAg
ICAgICB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgc3VwZXIucmVmcmVzaCgpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9n
ZW5lcmF0ZVNlY3Rpb24oaWQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpZCB8
fCAhZGlzcGxheU5hbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24g
cmVwbGFjZURhc2hXaXRoQ2FwaXRhbChtYXRjaCkgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNo
LnJlcGxhY2UoIi0iLCAiIikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBjYW1lbENhc2VJZCA9IGlkLnJlcGxhY2UoLy1cYlx3L2csIHJlcGxhY2VEYXNoV2l0aENhcGl0
YWwpOworCisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnNFbGVtZW50KCkgeworICAgICAg
ICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZWN0aW9uLWNs
ZWFyIik7CisgICAgICAgICAgICBjb250YWluZXIudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNsaWNrIHRvIGNsZWFyIG1vZGlmaWVkIHByb3BlcnRpZXMiKTsKKyAgICAgICAgICAgIGNv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsZWFyTW9kaWZpZWRTZWN0
aW9uLmJpbmQodGhpcywgY2FtZWxDYXNlSWQpKTsKKyAgICAgICAgICAgIHJldHVybiBjb250YWlu
ZXI7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9ncm91cHNbY2FtZWxDYXNlSWRdID0gewor
ICAgICAgICAgICAgc2VjdGlvbjogbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbihpZCwg
ZGlzcGxheU5hbWUsIFtdLCBjcmVhdGVPcHRpb25zRWxlbWVudC5jYWxsKHRoaXMpKSwKKyAgICAg
ICAgICAgIHByb3BlcnRpZXM6IHt9CisgICAgICAgIH07CisKKyAgICAgICAgbGV0IHBvcHVsYXRl
RnVuY3Rpb24gPSB0aGlzWyJfcG9wdWxhdGUiICsgY2FtZWxDYXNlSWQuY2FwaXRhbGl6ZSgpICsg
IlNlY3Rpb24iXTsKKyAgICAgICAgcG9wdWxhdGVGdW5jdGlvbi5jYWxsKHRoaXMpOworICAgIH0K
KworICAgIF9wcmVwYXJlRm9yQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fZm9y
Y2VOZXh0U3R5bGVVcGRhdGUgPSB0cnVlOworICAgIH0KKworICAgIF91cGRhdGVTZWN0aW9ucyhl
dmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZSA9IHRoaXMuX3NlbGVjdG9y
U2VjdGlvbi5jdXJyZW50U3R5bGUoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50U3R5bGUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGRpc2FibGVkID0gdGhpcy5fY3Vy
cmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURpc2Fi
bGVkU3ltYm9sXTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNh
YmxlZCIsIGRpc2FibGVkKTsKKyAgICAgICAgaWYgKGRpc2FibGVkKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9ncm91cHMpCisgICAgICAgICAg
ICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKHRoaXMuX2dyb3Vwc1trZXldLCAhIWV2ZW50KTsKKwor
ICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIGxl
dCBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNba2V5XTsKKyAgICAgICAgICAgIGxldCBvbmVTZWN0
aW9uRXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHNlY3Rp
b24uZ3JvdXBzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFncm91cC5jb2xsYXBzZWQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgb25lU2VjdGlvbkV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzZWN0aW9uLmNvbGxhcHNlZCA9ICFvbmVTZWN0aW9uRXhwYW5kZWQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBfdXBkYXRlUHJvcGVydGllcyhncm91cCwgZm9yY2VTdHlsZVVwZGF0
ZSkKKyAgICB7CisgICAgICAgIGlmICghZ3JvdXAuc2VjdGlvbikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBsZXQgaW5pdGlhbFRleHRMaXN0ID0gdGhpcy5fY3VycmVudFN0eWxlW1dl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9u
VGV4dExpc3RTeW1ib2xdOworICAgICAgICBpZiAoIWluaXRpYWxUZXh0TGlzdCkKKyAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sXSA9IGluaXRpYWxUZXh0TGlz
dCA9IG5ldyBXZWFrTWFwOworCisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0ID0ge307
CisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZyA9ICFpbml0aWFsVGV4dExp
c3QuaGFzKGdyb3VwKTsKKyAgICAgICAgbGV0IG9uZVByb3BlcnR5SGFzVmFsdWUgPSBmYWxzZTsK
KyAgICAgICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAg
IGxldCBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAg
IHByb3BlcnR5RWRpdG9yLnVwZGF0ZSghcHJvcGVydHlFZGl0b3Iuc3R5bGUgfHwgZm9yY2VTdHls
ZVVwZGF0ZSA/IHRoaXMuX2N1cnJlbnRTdHlsZSA6IG51bGwpOworCisgICAgICAgICAgICBsZXQg
dmFsdWUgPSBwcm9wZXJ0eUVkaXRvci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICAgICAgaWYg
KHZhbHVlICYmICFwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpIHsKKyAgICAgICAgICAg
ICAgICBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaW5p
dGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxQcm9w
ZXJ0eVRleHRba2V5XSA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nKQorICAgICAgICAgICAgaW5pdGlhbFRl
eHRMaXN0LnNldChncm91cCwgaW5pdGlhbFByb3BlcnR5VGV4dCk7CisKKyAgICAgICAgZ3JvdXAu
c2VjdGlvbi5jb2xsYXBzZWQgPSAhb25lUHJvcGVydHlIYXNWYWx1ZSAmJiAhZ3JvdXAuc2VjdGlv
bi5leHBhbmRlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5fc2VjdGlvbk1vZGlmaWVkKGdyb3VwKTsK
KworICAgICAgICBsZXQgYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBncm91cC5h
dXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllczsKKyAgICAgICAgaWYgKCFhdXRvY29tcGxl
dGVDb21wYXRpYmxlUHJvcGVydGllcyB8fCAhYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRp
ZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IGVkaXRv
ciBvZiBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcykKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNl
U3R5bGVVcGRhdGUpOworICAgIH0KKworICAgIF91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxl
UHJvcGVydHlFZGl0b3IoZWRpdG9yLCBmb3JjZSkKKyAgICB7CisgICAgICAgIGlmICghZWRpdG9y
IHx8IChlZGl0b3IuaGFzQ29tcGxldGlvbnMgJiYgIWZvcmNlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBlZGl0b3IuY29tcGxldGlvbnMgPSBXZWJJbnNwZWN0b3IuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLmZvclByb3BlcnR5KGVkaXRvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOwor
ICAgIH0KKworICAgIF9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBncm91
cC5zZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibW9kaWZpZWQiLCB0aGlzLl9pbml0
aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQoZ3JvdXApKTsKKyAgICB9CisKKyAgICBfY2xlYXJNb2Rp
ZmllZFNlY3Rpb24oZ3JvdXBJZCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dy
b3Vwc1tncm91cElkXTsKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoIm1vZGlmaWVkIik7CisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0TGlzdCA9
IHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
SW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sXS5nZXQoZ3JvdXApOworICAgICAg
ICBpZiAoIWluaXRpYWxQcm9wZXJ0eVRleHRMaXN0KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGxldCBuZXdTdHlsZVRleHQgPSB0aGlzLl9jdXJyZW50U3R5bGUudGV4dDsKKyAgICAg
ICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGxldCBp
bml0aWFsVmFsdWUgPSBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXldIHx8IG51bGw7CisgICAg
ICAgICAgICBuZXdTdHlsZVRleHQgPSBwcm9wZXJ0eUVkaXRvci5tb2RpZnlQcm9wZXJ0eVRleHQo
bmV3U3R5bGVUZXh0LCBpbml0aWFsVmFsdWUpOworICAgICAgICAgICAgcHJvcGVydHlFZGl0b3Iu
cmVzZXRFZGl0b3JWYWx1ZXMoaW5pdGlhbFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2N1cnJlbnRTdHlsZS50ZXh0ID0gbmV3U3R5bGVUZXh0OworICAgIH0KKworICAgIF9pbml0
aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBpZiAoIWdyb3Vw
LnByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbGV0IGlu
aXRpYWxQcm9wZXJ0eVRleHRMaXN0ID0gdGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1i
b2xdLmdldChncm91cCk7CisgICAgICAgIGlmICghaW5pdGlhbFByb3BlcnR5VGV4dExpc3QpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChsZXQga2V5IGluIGdyb3Vw
LnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnBy
b3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1p
c3NpbmcpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGxldCB2YWx1
ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgICAgICBpZiAodmFs
dWUgJiYgaW5pdGlhbFByb3BlcnR5VGV4dExpc3Rba2V5XSAhPT0gdmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgX3BvcHVsYXRlU2VjdGlvbihncm91cCwgZ3JvdXBzKQorICAgIHsKKyAgICAg
ICAgaWYgKCFncm91cCB8fCAhZ3JvdXBzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGdyb3VwLnNlY3Rpb24uZ3JvdXBzID0gZ3JvdXBzOworICAgICAgICBmb3IgKGxldCBrZXkgaW4g
Z3JvdXAucHJvcGVydGllcykKKyAgICAgICAgICAgIGdyb3VwLnByb3BlcnRpZXNba2V5XS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50
LlZhbHVlRGlkQ2hhbmdlLCB0aGlzLl9zZWN0aW9uTW9kaWZpZWQuYmluZCh0aGlzLCBncm91cCkp
OworICAgIH0KKworICAgIF9wb3B1bGF0ZURpc3BsYXlTZWN0aW9uKCkKKyAgICB7CisgICAgICAg
IGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaXNwbGF5OworICAgICAgICBsZXQgcHJvcGVydGll
cyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGRpc3BsYXlSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZGlzcGxh
eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJkaXNwbGF5Iiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIk5v
bmUiLCAiQmxvY2siLCAiRmxleCIsICJJbmxpbmUiLCAiSW5saW5lIEJsb2NrIl0sCisgICAgICAg
ICAgICBhZHZhbmNlZDogWyJDb21wYWN0IiwgIklubGluZSBGbGV4IiwgIklubGluZSBUYWJsZSIs
ICJMaXN0IEl0ZW0iLCAiVGFibGUiLCAiVGFibGUgQ2FwdGlvbiIsICJUYWJsZSBDZWxsIiwgIlRh
YmxlIENvbHVtbiIsICJUYWJsZSBDb2x1bW4gR3JvdXAiLCAiVGFibGUgRm9vdGVyIEdyb3VwIiwg
IlRhYmxlIEhlYWRlciBHcm91cCIsICJUYWJsZSBSb3ciLCAiVGFibGUgUm93IEdyb3VwIiwgIiBX
QVAgTWFycXVlZSIsICIgV2Via2l0IEJveCIsICIgV2Via2l0IEdyaWQiLCAiIFdlYmtpdCBJbmxp
bmUgQm94IiwgIiBXZWJraXQgSW5saW5lIEdyaWQiXQorICAgICAgICB9KTsKKyAgICAgICAgcHJv
cGVydGllcy52aXNpYmlsaXR5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQ
aWNrZXIoInZpc2liaWxpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZpc2liaWxpdHkiKSwg
eworICAgICAgICAgICAgYmFzaWM6IFsiSGlkZGVuIiwgIlZpc2libGUiXSwKKyAgICAgICAgICAg
IGFkdmFuY2VkOiBbIkNvbGxhcHNlIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgZGlzcGxheVJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZGlzcGxheS5lbGVtZW50KTsKKyAgICAg
ICAgZGlzcGxheVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudmlzaWJpbGl0eS5l
bGVtZW50KTsKKworICAgICAgICBsZXQgc2l6aW5nUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJveFNpemluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3gtc2l6aW5nIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaXppbmciKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsi
Qm9yZGVyIEJveCIsICJDb250ZW50IEJveCJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuY3Vyc29y
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImN1cnNvciIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ3Vyc29yIiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIkF1
dG8iLCAiRGVmYXVsdCIsICJOb25lIiwgIlBvaW50ZXIiLCAiQ3Jvc3NoYWlyIiwgIlRleHQiXSwK
KyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbnRleHQgTWVudSIsICJIZWxwIiwgIlByb2dyZXNz
IiwgIldhaXQiLCAiQ2VsbCIsICJWZXJ0aWNhbCBUZXh0IiwgIkFsaWFzIiwgIkNvcHkiLCAiTW92
ZSIsICJObyBEcm9wIiwgIk5vdCBBbGxvd2VkIiwgIkFsbCBTY3JvbGwiLCAiQ29sIFJlc2l6ZSIs
ICJSb3cgUmVzaXplIiwgIk4gUmVzaXplIiwgIkUgUmVzaXplIiwgIlMgUmVzaXplIiwgIlcgUmVz
aXplIiwgIk5TIFJlc2l6ZSIsICJFVyBSZXNpemUiLCAiTkUgUmVzaXplIiwgIk5XIFJlc2l6ZSIs
ICJTRSBSZXNpemUiLCAic1cgUmVzaXplIiwgIk5FU1cgUmVzaXplIiwgIk5XU0UgUmVzaXplIl0K
KyAgICAgICAgfSk7CisKKyAgICAgICAgc2l6aW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJv
cGVydGllcy5ib3hTaXppbmcuZWxlbWVudCk7CisgICAgICAgIHNpemluZ1Jvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuY3Vyc29yLmVsZW1lbnQpOworCisgICAgICAgIGxldCBvdmVy
Zmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5vcGFjaXR5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVuaXRTbGlk
ZXIoIm9wYWNpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9wYWNpdHkiKSk7CisgICAgICAg
IHByb3BlcnRpZXMub3ZlcmZsb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZFBpY2tlcihbIm92ZXJmbG93LXgiLCAib3ZlcmZsb3cteSJdLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk92ZXJmbG93IiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIkluaXRpYWwiLCAiQXV0byIs
ICJIaWRkZW4iLCAiU2Nyb2xsIiwgIlZpc2libGUiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBb
Ik1hcnF1ZWUiLCAiT3ZlcmxheSIsICIgV2Via2l0IFBhZ2VkIFgiLCAiIFdlYmtpdCBQYWdlZCBZ
Il0KKyAgICAgICAgfSk7CisKKyAgICAgICAgb3ZlcmZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLm9wYWNpdHkuZWxlbWVudCk7CisgICAgICAgIG92ZXJmbG93Um93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdmVyZmxvdy5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgZGlzcGxheUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtk
aXNwbGF5Um93LCBzaXppbmdSb3csIG92ZXJmbG93Um93XSk7CisgICAgICAgIHRoaXMuX3BvcHVs
YXRlU2VjdGlvbihncm91cCwgW2Rpc3BsYXlHcm91cF0pOworICAgIH0KKworICAgIF9nZW5lcmF0
ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBwcmVmaXgsIGFsbG93TmVnYXRpdmVzKQorICAgIHsK
KyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxl
dCBoYXNQcmVmaXggPSBwcmVmaXggJiYgcHJlZml4Lmxlbmd0aDsKKyAgICAgICAgbGV0IHByb3Bl
cnR5TmFtZVByZWZpeCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICItIiA6ICIiOworCisgICAgICAg
IGxldCB0b3AgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiVG9wIiA6ICJ0b3AiOworICAgICAgICBs
ZXQgYm90dG9tID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIkJvdHRvbSIgOiAiYm90dG9tIjsKKyAg
ICAgICAgbGV0IGxlZnQgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiTGVmdCIgOiAibGVmdCI7Cisg
ICAgICAgIGxldCByaWdodCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJSaWdodCIgOiAicmlnaHQi
OworCisgICAgICAgIGxldCB2ZXJ0aWNhbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllc1t0b3BdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJ0b3AiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5p
dHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzKTsKKyAgICAgICAgcHJvcGVydGllc1tib3R0b21d
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFt
ZVByZWZpeCArICJib3R0b20iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvdHRvbSIpLCB0aGlz
Ll9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVz
LCB0cnVlKTsKKyAgICAgICAgbGV0IHZlcnRpY2FsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwgcHJvcGVydGllc1ti
b3R0b21dXSwgImxpbmstdmVydGljYWwiKTsKKworICAgICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXNbdG9wXS5lbGVtZW50KTsKKyAgICAgICAgdmVydGljYWwuZWxl
bWVudC5hcHBlbmRDaGlsZCh2ZXJ0aWNhbExpbmsuZWxlbWVudCk7CisgICAgICAgIHZlcnRpY2Fs
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tib3R0b21dLmVsZW1lbnQpOworCisgICAg
ICAgIGxldCBob3Jpem9udGFsID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsK
KworICAgICAgICBwcm9wZXJ0aWVzW2xlZnRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJsZWZ0IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMZWZ0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5k
ZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBwcm9wZXJ0aWVzW3JpZ2h0XSA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChwcm9wZXJ0eU5hbWVQcmVm
aXggKyAicmlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0IiksIHRoaXMuX2tleXdv
cmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUp
OworICAgICAgICBsZXQgaG9yaXpvbnRhbExpbmsgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3JMaW5rKFtwcm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0
XV0sICJsaW5rLWhvcml6b250YWwiKTsKKworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllc1tsZWZ0XS5lbGVtZW50KTsKKyAgICAgICAgaG9yaXpvbnRhbC5l
bGVtZW50LmFwcGVuZENoaWxkKGhvcml6b250YWxMaW5rLmVsZW1lbnQpOworICAgICAgICBob3Jp
em9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tyaWdodF0uZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IGFsbExpbmtSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworICAgICAgICBsZXQgYWxsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwgcHJvcGVydGllc1tib3R0b21dLCBw
cm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0sICJsaW5rLWFsbCIsIFt2ZXJ0aWNh
bExpbmssIGhvcml6b250YWxMaW5rXSk7CisgICAgICAgIGFsbExpbmtSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChhbGxMaW5rLmVsZW1lbnQpOworCisgICAgICAgIHJldHVybiBbdmVydGljYWwsIGFs
bExpbmtSb3csIGhvcml6b250YWxdOworICAgIH0KKworICAgIF9wb3B1bGF0ZVBvc2l0aW9uU2Vj
dGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMucG9zaXRpb247
CisgICAgICAgIGxldCByb3dzID0gdGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91
cCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGll
czsKKworICAgICAgICBsZXQgcG9zaXRpb25UeXBlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnBvc2l0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUeXBlIiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIlN0YXRpYyIsICJSZWxhdGl2
ZSIsICJBYnNvbHV0ZSIsICJGaXhlZCJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiIFdlYmtp
dCBTdGlja3kiXQorICAgICAgICB9KTsKKyAgICAgICAgcHJvcGVydGllcy56SW5kZXggPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInotaW5kZXgiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoInotSW5kZXgiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIG51bGws
IHRydWUpOworCisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMucG9zaXRpb24uZWxlbWVudCk7CisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuekluZGV4LmVsZW1lbnQpOworICAgICAgICBwb3NpdGlvblR5
cGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyIpOwor
CisgICAgICAgIHJvd3MudW5zaGlmdChwb3NpdGlvblR5cGUpCisKKyAgICAgICAgbGV0IHBvc2l0
aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAocm93cyk7Cisg
ICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3Bvc2l0aW9uR3JvdXBdKTsKKyAg
ICB9CisKKyAgICBfcG9wdWxhdGVGbG9hdFNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdy
b3VwID0gdGhpcy5fZ3JvdXBzLmZsb2F0OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3Vw
LnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZsb2F0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmZsb2F0ID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiZmxvYXQiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZsb2F0IiksIFsiTGVmdCIsICJSaWdodCIsICJOb25lIl0pOworICAgICAgICBm
bG9hdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxvYXQuZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IGNsZWFyUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNsZWFyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRJY29uTGlzdCgiY2xlYXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFy
IiksIFsiTGVmdCIsICJSaWdodCIsICJCb3RoIiwgIk5vbmUiXSk7CisgICAgICAgIGNsZWFyUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jbGVhci5lbGVtZW50KTsKKworICAgICAg
ICBsZXQgZmxvYXRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChb
ZmxvYXRSb3csIGNsZWFyUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91
cCwgW2Zsb2F0R3JvdXBdKTsKKyAgICB9CisKKyAgICBfYWRkTWV0cmljc01vdXNlTGlzdGVuZXJz
KGVkaXRvciwgaGlnaGxpZ2h0Q29uZmlnKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gb25FZGl0
b3JNb3VzZW92ZXIoKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3N0eWxlKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9zdHlsZS5vd25lclJ1bGUp
IHsKKyAgICAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IE9yZGVyIG9mIHBh
cmFtZXRlcnMgY2hhbmdlZCBpbiBpT1MgNy4KKyAgICAgICAgICAgICAgICBET01BZ2VudC5oaWdo
bGlnaHROb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9zdHlsZS5ub2RlLmlkLCBoaWdobGlnaHRD
b25maWd9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChET01BZ2VudC5oaWdobGlnaHRTZWxlY3RvcikKKyAgICAgICAgICAgICAgICBE
T01BZ2VudC5oaWdobGlnaHRTZWxlY3RvcihoaWdobGlnaHRDb25maWcsIHRoaXMuX3N0eWxlLm93
bmVyUnVsZS5zZWxlY3RvclRleHQsIHRoaXMuX3N0eWxlLm5vZGUub3duZXJEb2N1bWVudC5mcmFt
ZUlkZW50aWZpZXIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25FZGl0b3JNb3Vz
ZW91dCgpIHsKKyAgICAgICAgICAgIERPTUFnZW50LmhpZGVIaWdobGlnaHQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIs
IG9uRWRpdG9yTW91c2VvdmVyLmJpbmQoZWRpdG9yKSk7CisgICAgICAgIGVkaXRvci5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwgb25FZGl0b3JNb3VzZW91dC5iaW5kKGVkaXRv
cikpOworICAgIH0KKworICAgIF9wb3B1bGF0ZURpbWVuc2lvbnNTZWN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25zOworICAgICAgICBsZXQg
cHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNX
aWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy53aWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJl
clNsaWRlcigid2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tl
eXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5z
aW9uc1dpZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aWR0aC5lbGVtZW50KTsK
KworICAgICAgICBsZXQgZGltZW5zaW9uc0hlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5oZWlnaHQgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoImhlaWdodCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0
cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgZGltZW5zaW9uc0hlaWdodC5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuaGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1l
bnNpb25zUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLndpZHRoLCBwcm9wZXJ0aWVzLmhlaWdodF07
CisgICAgICAgIGxldCBkaW1lbnNpb25zUmVndWxhckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNpb25zV2lkdGgsIGRpbWVuc2lvbnNIZWlnaHRdKTsK
KworICAgICAgICBsZXQgZGltZW5zaW9uc01pbldpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbldpZHRoID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtaW4td2lkdGgiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlz
Ll91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbldpZHRoLmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5taW5XaWR0aC5lbGVtZW50KTsKKworICAgICAgICBsZXQg
ZGltZW5zaW9uc01pbkhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5taW5IZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1pbi1oZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkhlaWdodCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVm
YXVsdHMpOworCisgICAgICAgIGRpbWVuc2lvbnNNaW5IZWlnaHQuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLm1pbkhlaWdodC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9u
c01pblByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5taW5XaWR0aCwgcHJvcGVydGllcy5taW5IZWln
aHRdOworICAgICAgICBsZXQgZGltZW5zaW9uc01pbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNpb25zTWluV2lkdGgsIGRpbWVuc2lvbnNNaW5IZWln
aHRdKTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01heEtleXdvcmRzID0gdGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMuY29uY2F0KCJOb25lIik7CisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4V2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMubWF4V2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1i
ZXJTbGlkZXIoIm1heC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgZGlt
ZW5zaW9uc01heEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGlt
ZW5zaW9uc01heFdpZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5tYXhXaWR0aC5l
bGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01heEhlaWdodCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5tYXhIZWlnaHQg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1heC1o
ZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBkaW1lbnNpb25zTWF4S2V5
d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWF4SGVp
Z2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5tYXhIZWlnaHQuZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IGRpbWVuc2lvbnNNYXhQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMubWF4V2lk
dGgsIHByb3BlcnRpZXMubWF4SGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNYXhHcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc01heFdp
ZHRoLCBkaW1lbnNpb25zTWF4SGVpZ2h0XSk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNUYWJD
b250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXND
b250cm9sbGVyKHsKKyAgICAgICAgICAgICJkZWZhdWx0Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRlZmF1bHQiKSwgZWxlbWVudDogZGltZW5zaW9uc1JlZ3VsYXJHcm91cC5lbGVt
ZW50LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zUHJvcGVydGllc30sCisgICAgICAgICAgICAibWlu
Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1pbiIpLCBlbGVtZW50OiBkaW1lbnNp
b25zTWluR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc01pblByb3BlcnRpZXN9
LAorICAgICAgICAgICAgIm1heCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXgi
KSwgZWxlbWVudDogZGltZW5zaW9uc01heEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVu
c2lvbnNNYXhQcm9wZXJ0aWVzfQorICAgICAgICB9KTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0
Q29uZmlnID0ge2NvbnRlbnRDb2xvcjoge3I6IDExMSwgZzogMTY4LCBiOiAyMjAsIGE6IDAuNjZ9
LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVy
cyhncm91cC5wcm9wZXJ0aWVzLndpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5oZWlnaHQsIGhpZ2hs
aWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91
cC5wcm9wZXJ0aWVzLm1pbldpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5taW5IZWlnaHQsIGhpZ2hs
aWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91
cC5wcm9wZXJ0aWVzLm1heFdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXhIZWlnaHQsIGhpZ2hs
aWdodENvbmZpZyk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNHcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIsIGRpbWVu
c2lvbnNSZWd1bGFyR3JvdXAsIGRpbWVuc2lvbnNNaW5Hcm91cCwgZGltZW5zaW9uc01heEdyb3Vw
XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2RpbWVuc2lvbnNHcm91
cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZU1hcmdpblNlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLm1hcmdpbjsKKyAgICAgICAgbGV0IHJvd3MgPSB0
aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAibWFyZ2luIiwgdHJ1ZSk7CisK
KyAgICAgICAgbGV0IGhpZ2hsaWdodENvbmZpZyA9IHttYXJnaW5Db2xvcjoge3I6IDI0NiwgZzog
MTc4LCBiOiAxMDcsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2Fk
ZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblRvcCwgaGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3Vw
LnByb3BlcnRpZXMubWFyZ2luQm90dG9tLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5MZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5tYXJnaW5SaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAg
ICBsZXQgbWFyZ2luR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
cm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW21hcmdpbkdyb3Vw
XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlUGFkZGluZ1NlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnBhZGRpbmc7CisgICAgICAgIGxldCByb3dzID0g
dGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgInBhZGRpbmciKTsKKworICAg
ICAgICBsZXQgaGlnaGxpZ2h0Q29uZmlnID0ge3BhZGRpbmdDb2xvcjoge3I6IDE0NywgZzogMTk2
LCBiOiAxMjUsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdUb3AsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLnBhZGRpbmdCb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdMZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5wYWRkaW5nUmlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAg
ICAgbGV0IHBhZGRpbmdHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91
cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcGFkZGluZ0dy
b3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRmxleGJveFNlY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsZXhib3g7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZmxleE9yZGVyUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
Lm9yZGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvcmRl
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JkZXIiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMpOworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhCYXNpcyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1iYXNpcyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQmFzaXMiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
LCB0cnVlKTsKKworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm9yZGVyLmVsZW1lbnQpOworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhCYXNpcy5lbGVtZW50KTsKKworICAgICAgICBsZXQgZmxl
eFNpemVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuZmxleEdyb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImZsZXgtZ3JvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiR3JvdyIpLCB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cywgbnVsbCk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFNocmlu
ayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1zaHJp
bmsiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNocmluayIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZh
dWx0cywgbnVsbCk7CisKKyAgICAgICAgZmxleFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmZsZXhHcm93LmVsZW1lbnQpOworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleFNocmluay5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgZmxleEZsb3dSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuZmxleERpcmVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJmbGV4LWRpcmVjdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIlJvdyIsICJS
b3cgUmV2ZXJzZSIsICJDb2x1bW4iLCAiQ29sdW1uIFJldmVyc2UiXSkpOworICAgICAgICBwcm9w
ZXJ0aWVzLmZsZXhXcmFwID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNr
ZXIoImZsZXgtd3JhcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV3JhcCIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJXcmFwIiwgIldyYXAgUmV2ZXJzZSIsICJOb3dyYXAiXSkp
OworCisgICAgICAgIGZsZXhGbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5m
bGV4RGlyZWN0aW9uLmVsZW1lbnQpOworICAgICAgICBmbGV4Rmxvd1Jvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuZmxleFdyYXAuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGZsZXhi
b3hHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZmxleE9yZGVy
Um93LCBmbGV4U2l6ZVJvdywgZmxleEZsb3dSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBbZmxleGJveEdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVGV4
dFN0eWxlU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
dGV4dFN0eWxlOworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisK
KyAgICAgICAgbGV0IHRleHRBcHBlYXJhbmNlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJjb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMudGV4dERpcmVjdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJkaXJlY3Rpb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpcmVjdGlvbiIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJM
VFIiLCAiUlRMIl0pKTsKKworICAgICAgICB0ZXh0QXBwZWFyYW5jZVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuY29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRBcHBlYXJhbmNl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0RGlyZWN0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIGxldCB0ZXh0QWxpZ25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudGV4dEFsaWduID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgidGV4dC1hbGlnbiIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQWxpZ24iKSwgWyJMZWZ0IiwgIkNlbnRlciIsICJSaWdodCIsICJKdXN0aWZ5
Il0pOworCisgICAgICAgIHRleHRBbGlnblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMudGV4dEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0VHJhbnNmb3JtUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LnRleHRUcmFuc2Zvcm0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LXRyYW5zZm9ybSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmb3JtIiks
IFsiQ2FwaXRhbGl6ZSIsICJVcHBlcmNhc2UiLCAiTG93ZXJjYXNlIiwgIk5vbmUiXSk7CisKKyAg
ICAgICAgdGV4dFRyYW5zZm9ybVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4
dFRyYW5zZm9ybS5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dERlY29yYXRpb25Sb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
dGV4dERlY29yYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LWRlY29yYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlY29yYXRpb24i
KSwgWyJVbmRlcmxpbmUiLCAiTGluZSBUaHJvdWdoIiwgIk92ZXJsaW5lIiwgIk5vbmUiXSk7CisK
KyAgICAgICAgdGV4dERlY29yYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LnRleHREZWNvcmF0aW9uLmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuY29sb3JdOworCisgICAgICAgIGxldCB0
ZXh0U3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4
dEFwcGVhcmFuY2VSb3csIHRleHRBbGlnblJvdywgdGV4dFRyYW5zZm9ybVJvdywgdGV4dERlY29y
YXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFN0
eWxlR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGb250U2VjdGlvbigpCisgICAgewor
ICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZm9udDsKKyAgICAgICAgbGV0IHByb3Bl
cnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBmb250RmFtaWx5Um93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmZvbnRGYW1pbHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RF
ZGl0b3IoImZvbnQtZmFtaWx5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGYW1pbHkiKSk7CisK
KyAgICAgICAgZm9udEZhbWlseVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9u
dEZhbWlseS5lbGVtZW50KTsKKworICAgICAgICBsZXQgZm9udFNpemVSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZvbnQtc2l6ZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJMYXJnZXIiLCAiWFggTGFyZ2UiLCAiWCBMYXJnZSIsICJMYXJnZSIsICJNZWRpdW0i
LCAiU21hbGwiLCAiWCBTbWFsbCIsICJYWCBTbWFsbCIsICJTbWFsbGVyIl0pLCB0aGlzLl91bml0
cy5kZWZhdWx0cyk7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250V2VpZ2h0ID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZvbnQtd2VpZ2h0IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJXZWlnaHQiKSwgeworICAgICAgICAgICAgYmFzaWM6IHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLmNvbmNhdChbIkJvbGRlciIsICJCb2xkIiwgIk5vcm1hbCIsICJMaWdodGVy
Il0pLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiMTAwIiwgIjIwMCIsICIzMDAiLCAiNDAwIiwg
IjUwMCIsICI2MDAiLCAiNzAwIiwgIjgwMCIsICI5MDAiXQorICAgICAgICB9KTsKKworICAgICAg
ICBmb250U2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFNpemUuZWxl
bWVudCk7CisgICAgICAgIGZvbnRTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5mb250V2VpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBmb250U3R5bGVSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9u
dFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiZm9u
dC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgWyJJdGFsaWMiLCAiTm9y
bWFsIl0pOworICAgICAgICBwcm9wZXJ0aWVzLmZvbnRWYXJpYW50ID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRDaGVja2JveCgiZm9udC12YXJpYW50IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJWYXJpYW50IiksICJTbWFsbCBDYXBzIikKKworICAgICAgICBmb250U3R5bGVS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRTdHlsZS5lbGVtZW50KTsKKyAg
ICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250VmFy
aWFudC5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydGllcyA9IFtwcm9wZXJ0aWVzLmZvbnRGYW1pbHldOworCisgICAgICAgIGxldCBmb250R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2ZvbnRGYW1pbHlSb3cs
IGZvbnRTaXplUm93LCBmb250U3R5bGVSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0
aW9uKGdyb3VwLCBbZm9udEdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVGV4dFNwYWNp
bmdTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0
U3BhY2luZzsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisg
ICAgICAgIGxldCBkZWZhdWx0VGV4dEtleXdvcmRzID0gdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMu
Y29uY2F0KFsiTm9ybWFsIl0pOworCisgICAgICAgIGxldCB0ZXh0TGF5b3V0Um93ID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmxpbmVI
ZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImxpbmUt
aGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgZGVmYXVsdFRleHRLZXl3
b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLnZlcnRpY2Fs
QWxpZ24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInZlcnRp
Y2FsLWFsaWduIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGlnbiIpLCBbIkJhc2VsaW5lIiwg
IkJvdHRvbSJdLmNvbmNhdCh0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgWyJNaWRkbGUiLCAiU3Vi
IiwgIlN1cGVyIiwgIlRleHQgQm90dG9tIiwgIlRleHQgVG9wIiwgIlRvcCJdKSwgdGhpcy5fdW5p
dHMuZGVmYXVsdHMpOworCisgICAgICAgIHRleHRMYXlvdXRSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmxpbmVIZWlnaHQuZWxlbWVudCk7CisgICAgICAgIHRleHRMYXlvdXRSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnZlcnRpY2FsQWxpZ24uZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IHRleHRTcGFjaW5nUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmxldHRlclNwYWNpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImxldHRlci1zcGFjaW5nIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMZXR0ZXIiKSwgZGVmYXVsdFRleHRLZXl3b3JkcywgdGhpcy5fdW5p
dHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLndvcmRTcGFjaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ3b3JkLXNwYWNpbmciLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIldvcmQiKSwgZGVmYXVsdFRleHRLZXl3b3JkcywgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMpOworCisgICAgICAgIHRleHRTcGFjaW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy5sZXR0ZXJTcGFjaW5nLmVsZW1lbnQpOworICAgICAgICB0ZXh0U3BhY2luZ1Jv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMud29yZFNwYWNpbmcuZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IHRleHRXaGl0ZXNwYWNlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRleHRJbmRlbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtaW5kZW50IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJJbmRlbnQiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3Vu
aXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53aGl0ZVNwYWNlID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoIndoaXRlLXNwYWNlIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJXaGl0ZXNwYWNlIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNh
dChbIk5vcm1hbCIsICJOb3dyYXAiLCAiUHJlIiwgIlByZSBMaW5lIiwgIlByZSBXcmFwIl0pKTsK
KworICAgICAgICB0ZXh0V2hpdGVzcGFjZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMudGV4dEluZGVudC5lbGVtZW50KTsKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndoaXRlU3BhY2UuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IHRleHRTcGFjaW5nR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAoW3RleHRMYXlvdXRSb3csIHRleHRTcGFjaW5nUm93LCB0ZXh0V2hpdGVzcGFjZVJvd10pOwor
ICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U3BhY2luZ0dyb3VwXSk7
CisgICAgfQorCisgICAgX3BvcHVsYXRlVGV4dFNoYWRvd1NlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRleHRTaGFkb3c7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgdGV4dFNoYWRvd1Npemlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IHRl
eHRTaGFkb3dIID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0
ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSG9yaXpvbnRhbCIpLCBudWxsLCB0
aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKyAgICAgICAgbGV0IHRleHRTaGFkb3dW
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0LXNoYWRv
dyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmVydGljYWwiKSwgbnVsbCwgdGhpcy5fdW5pdHMu
ZGVmYXVsdHNTYW5zUGVyY2VudCk7CisKKyAgICAgICAgdGV4dFNoYWRvd1NpemluZy5lbGVtZW50
LmFwcGVuZENoaWxkKHRleHRTaGFkb3dILmVsZW1lbnQpOworICAgICAgICB0ZXh0U2hhZG93U2l6
aW5nLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dFNoYWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IHRleHRTaGFkb3dTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgbGV0IHRleHRTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVDb2xvclBpY2tlcigidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bG9yIikpOworICAgICAgICB0ZXh0U2hhZG93Q29sb3IuY29sb3JQcm9wZXJ0eSA9IHRydWU7Cisg
ICAgICAgIGxldCB0ZXh0U2hhZG93Qmx1ciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJsdXIi
KSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAgICAgIHRleHRT
aGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIHRleHRTaGFkb3dT
dHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dDb2xvci5lbGVtZW50KTsKKyAgICAg
ICAgdGV4dFNoYWRvd1N0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dFNoYWRvd0JsdXIuZWxl
bWVudCk7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0U2hhZG93ID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoInRleHQtc2hhZG93IiwgW3RleHRTaGFkb3dI
LCB0ZXh0U2hhZG93ViwgdGV4dFNoYWRvd0JsdXIsIHRleHRTaGFkb3dDb2xvcl0pOworCisgICAg
ICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3RleHRTaGFkb3dD
b2xvcl07CisKKyAgICAgICAgbGV0IHRleHRTaGFkb3dHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4dFNoYWRvd1NpemluZywgdGV4dFNoYWRvd1N0eWxlXSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3RleHRTaGFkb3dHcm91cF0p
OworICAgIH0KKworICAgIF9wb3B1bGF0ZUJhY2tncm91bmRTdHlsZVNlY3Rpb24oKQorICAgIHsK
KyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmJhY2tncm91bmRTdHlsZTsKKyAgICAg
ICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBiYWNr
Z3JvdW5kU3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbG9yUGlja2VyKCJiYWNrZ3JvdW5kLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVVJMSW5wdXQoImJhY2tncm91bmQtaW1hZ2UiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkltYWdlIikpOworCisgICAgICAgIGJhY2tncm91bmRTdHlsZVJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yLmVsZW1lbnQp
OworICAgICAgICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJhY2tncm91bmRJbWFnZS5lbGVtZW50KTsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFNp
emVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxl
dCBiYWNrZ3JvdW5kU2l6ZUtleXdvcmRzID0gdGhpcy5fa2V5d29yZHMuYm94TW9kZWwuY29uY2F0
KFsiQ29udGFpbiIsICJDb3ZlciJdKTsKKyAgICAgICAgbGV0IGJhY2tncm91bmRTaXplWCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1zaXpl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCBiYWNrZ3JvdW5kU2l6ZUtleXdvcmRz
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRTaXplWC5tYXN0ZXJQ
cm9wZXJ0eSA9IHRydWU7CisgICAgICAgIGxldCBiYWNrZ3JvdW5kU2l6ZVkgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91bmQtc2l6ZSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGJhY2tncm91bmRTaXplS2V5d29yZHMsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVZLm1hc3RlclByb3BlcnR5
ID0gdHJ1ZTsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRTaXplID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJhY2tncm91bmQtc2l6ZSIsIFti
YWNrZ3JvdW5kU2l6ZVgsIGJhY2tncm91bmRTaXplWV0pOworCisgICAgICAgIGJhY2tncm91bmRT
aXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZFNpemVYLmVsZW1lbnQpOworICAg
ICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRTaXpl
WS5lbGVtZW50KTsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFJlcGVhdFJvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3Jv
dW5kUmVwZWF0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJh
Y2tncm91bmQtcmVwZWF0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXQiKSwgdGhpcy5f
a2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTm8gUmVwZWF0IiwgIlJlcGVhdCIsICJSZXBlYXQg
WCIsICJSZXBlYXQgWSJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZEF0dGFjaG1l
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYmFja2dyb3Vu
ZC1hdHRhY2htZW50IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRhY2giKSwgdGhpcy5fa2V5
d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiRml4ZWQiLCAiTG9jYWwiLCAiU2Nyb2xsIl0pKTsKKwor
ICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5iYWNrZ3JvdW5kUmVwZWF0LmVsZW1lbnQpOworICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0Um93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kQXR0YWNobWVudC5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFBvc2l0aW9uUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFBvc2l0aW9u
WCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3Vu
ZC1wb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUG9zaXRpb24gWCIpLCBbIkNlbnRl
ciIsICJMZWZ0IiwgIlJpZ2h0Il0sIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgbGV0
IGJhY2tncm91bmRQb3NpdGlvblkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBv
c2l0aW9uIFkiKSwgWyJCb3R0b20iLCAiQ2VudGVyIiwgIlRvcCJdLCB0aGlzLl91bml0cy5kZWZh
dWx0cyk7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kUG9zaXRpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigiYmFja2dyb3VuZC1wb3NpdGlv
biIsIFtiYWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kUG9zaXRpb25ZXSk7CisKKyAgICAg
ICAgYmFja2dyb3VuZFBvc2l0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZFBv
c2l0aW9uWC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFBvc2l0aW9uUm93LmVsZW1lbnQu
YXBwZW5kQ2hpbGQoYmFja2dyb3VuZFBvc2l0aW9uWS5lbGVtZW50KTsKKworICAgICAgICBncm91
cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJhY2tncm91
bmRDb2xvcl07CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRTdHlsZUdyb3VwID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtiYWNrZ3JvdW5kU3R5bGVSb3csIGJhY2tncm91
bmRTaXplUm93LCBiYWNrZ3JvdW5kUmVwZWF0Um93LCBiYWNrZ3JvdW5kUG9zaXRpb25Sb3ddKTsK
KyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYmFja2dyb3VuZFN0eWxlR3Jv
dXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCb3JkZXJTZWN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5ib3JkZXI7CisgICAgICAgIGxldCBwcm9wZXJ0
aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgYm9yZGVyQWxsU2l6ZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKFsi
Ym9yZGVyLXRvcC1zdHlsZSIsICJib3JkZXItcmlnaHQtc3R5bGUiLCAiYm9yZGVyLWJvdHRvbS1z
dHlsZSIsICJib3JkZXItbGVmdC1zdHlsZSJdICwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHls
ZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyU3R5bGUucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci1zdHlsZSI7CisgICAgICAg
IHByb3BlcnRpZXMuYm9yZGVyV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goWyJib3JkZXItdG9wLXdpZHRoIiwgImJvcmRlci1yaWdodC13aWR0aCIsICJi
b3JkZXItYm90dG9tLXdpZHRoIiwgImJvcmRlci1sZWZ0LXdpZHRoIl0sIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJXaWR0aC5wcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUgPSAiYm9yZGVyLXdpZHRoIjsKKworICAgICAgICBib3JkZXJBbGxTaXplLmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJTdHlsZS5lbGVtZW50KTsKKyAgICAgICAg
Ym9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyV2lkdGgu
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlckFsbFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckNvbG9yID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKFsiYm9yZGVyLXRvcC1jb2xv
ciIsICJib3JkZXItcmlnaHQtY29sb3IiLCAiYm9yZGVyLWJvdHRvbS1jb2xvciIsICJib3JkZXIt
bGVmdC1jb2xvciJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlckNvbG9yLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItY29s
b3IiOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCAiYm9y
ZGVyLXRvcC1yaWdodC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3Jk
ZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIp
LCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAg
ICBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1cy5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVy
LXJhZGl1cyI7CisKKyAgICAgICAgYm9yZGVyQWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlckNvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJBbGxTdHlsZS5l
bGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmFkaXVzLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBib3JkZXJBbGxQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyU3R5bGUs
IHByb3BlcnRpZXMuYm9yZGVyV2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyQ29sb3IsIHByb3BlcnRp
ZXMuYm9yZGVyUmFkaXVzXTsKKyAgICAgICAgbGV0IGJvcmRlckFsbEdyb3VwID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJBbGxTaXplLCBib3JkZXJBbGxTdHls
ZV0pOworCisgICAgICAgIGxldCBib3JkZXJUb3BTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJvcmRlci10b3Atc3R5bGUi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0
eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BXaWR0aCA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXRvcC13aWR0aCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJUb3BTaXplLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVy
VG9wU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGguZWxl
bWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlclRvcFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItdG9wLWNvbG9y
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJUb3BSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIl0s
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRz
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLmVsZW1lbnQpOworICAgICAg
ICBib3JkZXJUb3BTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9w
UmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJUb3BQcm9wZXJ0aWVzID0gW3By
b3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIHByb3Bl
cnRpZXMuYm9yZGVyVG9wQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzXTsKKyAgICAg
ICAgbGV0IGJvcmRlclRvcEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFtib3JkZXJUb3BTaXplLCBib3JkZXJUb3BTdHlsZV0pOworCisgICAgICAgIGxldCBib3Jk
ZXJSaWdodFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItcmlnaHQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJSaWdodFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KCJib3JkZXItcmlnaHQtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgYm9yZGVyUmlnaHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5ib3JkZXJSaWdodFN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJSaWdodFNpemUu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGguZWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGJvcmRlclJpZ2h0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvciA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLXJpZ2h0LWNvbG9y
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJSaWdodFJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveChbImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tcmlnaHQtcmFk
aXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyUmlnaHRTdHls
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvci5lbGVtZW50
KTsKKyAgICAgICAgYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYm9yZGVyUmlnaHRSYWRpdXMuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlclJpZ2h0
UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUsIHByb3BlcnRpZXMuYm9y
ZGVyUmlnaHRXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJSaWdodENvbG9yLCBwcm9wZXJ0aWVzLmJv
cmRlclJpZ2h0UmFkaXVzXTsKKyAgICAgICAgbGV0IGJvcmRlclJpZ2h0R3JvdXAgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlclJpZ2h0U2l6ZSwgYm9yZGVyUmln
aHRTdHlsZV0pOworCisgICAgICAgIGxldCBib3JkZXJCb3R0b21TaXplID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJvdHRv
bVN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJvcmRl
ci1ib3R0b20tc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tl
eXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21XaWR0
aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLWJv
dHRvbS13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29y
ZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJC
b3R0b21TaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHls
ZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJv
cmRlckJvdHRvbVN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItYm90dG9tLWNvbG9yIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21SYWRp
dXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXIt
Ym90dG9tLWxlZnQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIl0sIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlz
Ll91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLmVsZW1lbnQpOworICAgICAg
ICBib3JkZXJCb3R0b21TdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVy
Qm90dG9tUmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJCb3R0b21Qcm9wZXJ0
aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyQm90dG9tU3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyQm90
dG9tV2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVy
Qm90dG9tUmFkaXVzXTsKKyAgICAgICAgbGV0IGJvcmRlckJvdHRvbUdyb3VwID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJCb3R0b21TaXplLCBib3JkZXJCb3R0
b21TdHlsZV0pOworCisgICAgICAgIGxldCBib3JkZXJMZWZ0U2l6ZSA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0U3R5
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLWxl
ZnQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRz
LmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGggPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci1sZWZ0LXdpZHRo
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJX
aWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckxlZnRTaXplLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJMZWZ0U3R5bGUuZWxlbWVudCk7Cisg
ICAgICAgIGJvcmRlckxlZnRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3Jk
ZXJMZWZ0V2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlckxlZnRTdHlsZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJMZWZ0Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIo
ImJvcmRlci1sZWZ0LWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAg
ICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0UmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXIt
Ym90dG9tLWxlZnQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRo
aXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAg
Ym9yZGVyTGVmdFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJMZWZ0
Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQg
Ym9yZGVyTGVmdFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJMZWZ0U3R5bGUsIHByb3Bl
cnRpZXMuYm9yZGVyTGVmdFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRDb2xvciwgcHJvcGVy
dGllcy5ib3JkZXJMZWZ0UmFkaXVzXTsKKyAgICAgICAgbGV0IGJvcmRlckxlZnRHcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyTGVmdFNpemUsIGJvcmRl
ckxlZnRTdHlsZV0pOworCisgICAgICAgIGxldCBib3JkZXJUYWJDb250cm9sbGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyKHsKKyAgICAg
ICAgICAgICJhbGwiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIiksIGVsZW1l
bnQ6IGJvcmRlckFsbEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlckFsbFByb3BlcnRp
ZXN9LAorICAgICAgICAgICAgInRvcCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
b3AiKSwgZWxlbWVudDogYm9yZGVyVG9wR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVy
VG9wUHJvcGVydGllc30sCisgICAgICAgICAgICAicmlnaHQiOiB7dGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmlnaHQiKSwgZWxlbWVudDogYm9yZGVyUmlnaHRHcm91cC5lbGVtZW50LCBw
cm9wZXJ0aWVzOiBib3JkZXJSaWdodFByb3BlcnRpZXN9LAorICAgICAgICAgICAgImJvdHRvbSI6
IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3R0b20iKSwgZWxlbWVudDogYm9yZGVy
Qm90dG9tR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyQm90dG9tUHJvcGVydGllc30s
CisgICAgICAgICAgICAibGVmdCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0
IiksIGVsZW1lbnQ6IGJvcmRlckxlZnRHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJM
ZWZ0UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodENvbmZp
ZyA9IHtib3JkZXJDb2xvcjoge3I6IDI1NSwgZzogMjI5LCBiOiAxNTMsIGE6IDAuNjZ9LCBzaG93
SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91
cC5wcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJUb3BXaWR0
aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVu
ZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVz
LmJvcmRlckxlZnRXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0
cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCwgaGln
aGxpZ2h0Q29uZmlnKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENv
bG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRD
b2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdodENvbG9yXTsKKworICAgICAgICBsZXQgYm9yZGVy
R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlclRhYkNv
bnRyb2xsZXIsIGJvcmRlckFsbEdyb3VwLCBib3JkZXJUb3BHcm91cCwgYm9yZGVyUmlnaHRHcm91
cCwgYm9yZGVyQm90dG9tR3JvdXAsIGJvcmRlckxlZnRHcm91cF0pOworICAgICAgICB0aGlzLl9w
b3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3JkZXJHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1
bGF0ZU91dGxpbmVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dy
b3Vwcy5vdXRsaW5lOworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7
CisKKyAgICAgICAgbGV0IG91dGxpbmVTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgib3V0bGluZS13aWR0aCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5lT2Zmc2V0ID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvdXRsaW5lLW9mZnNl
dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2Zmc2V0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1
bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgb3V0bGluZVNpemVS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aC5lbGVtZW50KTsK
KyAgICAgICAgb3V0bGluZVNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91
dGxpbmVPZmZzZXQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IG91dGxpbmVTdHlsZVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5v
dXRsaW5lU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigi
b3V0bGluZS1zdHlsZSIgLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tl
eXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5lQ29sb3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoIm91dGxpbmUtY29sb3IiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworCisgICAgICAgIG91dGxpbmVTdHlsZVJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZVN0eWxlLmVsZW1lbnQpOwor
ICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91
dGxpbmVDb2xvci5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRp
YmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm91dGxpbmVDb2xvcl07CisKKyAgICAgICAgbGV0
IG91dGxpbmVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbb3V0
bGluZVNpemVSb3csIG91dGxpbmVTdHlsZVJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNl
Y3Rpb24oZ3JvdXAsIFtvdXRsaW5lR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCb3hT
aGFkb3dTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5i
b3hTaGFkb3c7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKwor
ICAgICAgICBsZXQgYm94U2hhZG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IoImJveC1zaGFkb3ciKTsKKyAg
ICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjEx
cHgiOworCisgICAgICAgIGJveFNoYWRvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYm94U2hhZG93LmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dIUm93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgYm94U2hhZG93
SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiYm94
LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBudWxsLCB0aGlzLl91bml0
cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKworICAgICAgICBib3hTaGFkb3dIUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93SC5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm94
U2hhZG93VlJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAg
ICAgbGV0IGJveFNoYWRvd1YgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVO
dW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCBu
dWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKworICAgICAgICBi
b3hTaGFkb3dWUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Vi5lbGVtZW50KTsKKwor
ICAgICAgICBsZXQgYm94U2hhZG93Qmx1clJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkJsdXIiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7Cisg
ICAgICAgIGJveFNoYWRvd0JsdXIub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgIGxl
dCBib3hTaGFkb3dTcHJlYWQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNwcmVhZCIpLCBudWxs
LCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKyAgICAgICAgYm94U2hh
ZG93U3ByZWFkLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIGJveFNoYWRvd0Js
dXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dCbHVyLmVsZW1lbnQpOworICAgICAg
ICBib3hTaGFkb3dCbHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93U3ByZWFkLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dDb2xvclJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0NvbG9yID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3gtc2hhZG93IiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgYm94U2hhZG93Q29sb3IuY29sb3JQ
cm9wZXJ0eSA9IHRydWU7CisgICAgICAgIGxldCBib3hTaGFkb3dJbnNldCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkluc2V0IiksICJJbnNldCIpOworICAgICAgICBib3hTaGFkb3dJbnNldC5v
cHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dDb2xvclJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0NvbG9yLmVsZW1lbnQpOworICAgICAgICBib3hTaGFk
b3dDb2xvclJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0luc2V0LmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJveC1zaGFkb3ciLCBbYm94U2hhZG93SCwg
Ym94U2hhZG93ViwgYm94U2hhZG93Qmx1ciwgYm94U2hhZG93U3ByZWFkLCBib3hTaGFkb3dDb2xv
ciwgYm94U2hhZG93SW5zZXRdKTsKKworICAgICAgICBmdW5jdGlvbiBub1JlbWFpbmluZ1RyZWVJ
dGVtcygpIHsKKyAgICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIudXBkYXRlVmFs
dWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgYm94U2hhZG93SC5kaXNhYmxlZCA9IHRydWU7
CisgICAgICAgICAgICBib3hTaGFkb3dWLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJv
eFNoYWRvd0JsdXIuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93U3ByZWFk
LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0NvbG9yLmRpc2FibGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0luc2V0LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5Ob1Jl
bWFpbmluZ1RyZWVJdGVtcywgbm9SZW1haW5pbmdUcmVlSXRlbXMsIHRoaXMpOworCisgICAgICAg
IGZ1bmN0aW9uIHNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCgpIHsKKyAgICAgICAg
ICAgIHByb3BlcnRpZXMuYm94U2hhZG93LnNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1ZSA9IGJveFNo
YWRvd1Byb3BlcnR5Q29tYmluZXIuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHNlbGVjdGVk
Qm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gYm94
U2hhZG93SXRlbVNlbGVjdGVkKGV2ZW50KSB7CisgICAgICAgICAgICBib3hTaGFkb3dQcm9wZXJ0
eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4dCB8fCAiIik7Cisg
ICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQu
VHJlZUl0ZW1TZWxlY3RlZCwgYm94U2hhZG93SXRlbVNlbGVjdGVkLCB0aGlzKTsKKworICAgICAg
ICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtib3hTaGFkb3dDb2xv
cl07CisKKyAgICAgICAgbGV0IGJveFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Hcm91cChbYm94U2hhZG93Um93LCBib3hTaGFkb3dIUm93LCBib3hTaGFkb3dWUm93LCBi
b3hTaGFkb3dCbHVyUm93LCBib3hTaGFkb3dDb2xvclJvd10pOworICAgICAgICB0aGlzLl9wb3B1
bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3hTaGFkb3ddKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVU
cmFuc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91
cHMudHJhbnNpdGlvbjsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVz
OworCisgICAgICAgIGxldCB0cmFuc2l0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yKCJ0cmFuc2l0aW9u
Iik7CisgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50LnN0eWxlLm1hcmdpbkxl
ZnQgPSAiMTFweCI7CisKKyAgICAgICAgdHJhbnNpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50KTsKKworICAgICAgICBsZXQgdHJhbnNpdGlv
blByb3BlcnR5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBsZXQgdHJhbnNpdGlvblByb3BlcnR5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5TmFtZUlucHV0KCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQcm9wZXJ0eSIpKTsKKyAgICAgICAgbGV0IHRyYW5zaXRpb25UaW1pbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yKCJ0cmFuc2l0aW9uLXRpbWluZy1m
dW5jdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltaW5nIiksIFsiTGluZWFyIiwgIkVh
c2UiLCAiRWFzZSBJbiIsICJFYXNlIE91dCIsICJFYXNlIEluIE91dCJdKTsKKworICAgICAgICB0
cmFuc2l0aW9uUHJvcGVydHlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uUHJvcGVy
dHkuZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRyYW5zaXRpb25UaW1pbmcuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRyYW5zaXRp
b25EdXJhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgbGV0IHRyYW5zaXRpb25UaW1lS2V5d29yZHMgPSBbInMiLCAibXMiXTsKKyAgICAgICAg
bGV0IHRyYW5zaXRpb25EdXJhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1i
ZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kdXJhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RHVyYXRpb24iKSwgbnVsbCwgdHJhbnNpdGlvblRpbWVLZXl3b3Jkcyk7CisgICAgICAgIGxldCB0
cmFuc2l0aW9uRGVsYXkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goInRyYW5zaXRpb24tZGVsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGF5IiksIG51
bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMpOworICAgICAgICB0cmFuc2l0aW9uRGVsYXkub3B0
aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvbkR1cmF0aW9uLmVsZW1lbnQpOworICAgICAgICB0
cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uRGVsYXku
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoInRyYW5zaXRpb24iLCBb
dHJhbnNpdGlvblByb3BlcnR5LCB0cmFuc2l0aW9uVGltaW5nLCB0cmFuc2l0aW9uRHVyYXRpb24s
IHRyYW5zaXRpb25EZWxheV0pOworCisgICAgICAgIGZ1bmN0aW9uIG5vUmVtYWluaW5nVHJlZUl0
ZW1zKCkgeworICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIudXBkYXRlVmFs
dWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5LmRpc2FibGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25UaW1pbmcuZGlzYWJsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHRyYW5zaXRpb25EZWxheS5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
cHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0
ZW1zLCBub1JlbWFpbmluZ1RyZWVJdGVtcywgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2Vs
ZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCgpIHsKKyAgICAgICAgICAgIHByb3BlcnRp
ZXMudHJhbnNpdGlvbi5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSB0cmFuc2l0aW9uUHJvcGVy
dHlDb21iaW5lci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICB9CisgICAgICAgIHRyYW5zaXRp
b25Qcm9wZXJ0eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHNlbGVjdGVkdHJhbnNpdGlv
bkl0ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25J
dGVtU2VsZWN0ZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJp
bmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4dCB8fCAiIik7CisgICAgICAg
IH0KKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJ
dGVtU2VsZWN0ZWQsIHRyYW5zaXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdy
b3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3RyYW5zaXRpb25Qcm9wZXJ0
eV07CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChbdHJhbnNpdGlvblJvdywgdHJhbnNpdGlvblByb3BlcnR5Um93LCB0
cmFuc2l0aW9uRHVyYXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdy
b3VwLCBbdHJhbnNpdGlvbkdyb3VwXSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRTeW1ib2wgPSBTeW1ib2woInZpc3VhbC1z
dHlsZS1zdHlsZS1kaXNhYmxlZCIpOworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbCA9IFN5bWJvbCgidmlzdWFs
LXN0eWxlLWluaXRpYWwtcHJvcGVydHktc2VjdGlvbi10ZXh0Iik7CisKK1dlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm9wZXJ0eVJlZmVyZW5jZUluZm8gPSB7CisgICAgImJh
Y2tncm91bmQtYXR0YWNobWVudCI6ICJJZiBhIGJhY2tncm91bmQtaW1hZ2UgaXMgc3BlY2lmaWVk
LCB0aGUgYmFja2dyb3VuZC1hdHRhY2htZW50IENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXRo
ZXIgdGhhdCBpbWFnZSdzIHBvc2l0aW9uIGlzIGZpeGVkIHdpdGhpbiB0aGUgdmlld3BvcnQsIG9y
IHNjcm9sbHMgYWxvbmcgd2l0aCBpdHMgY29udGFpbmluZyBibG9jay4iLAorICAgICJiYWNrZ3Jv
dW5kLWNvbG9yIjogIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQsIGVpdGhlciB0aHJvdWdoIGEgY29sb3IgdmFs
dWUgb3IgdGhlIGtleXdvcmQgdHJhbnNwYXJlbnQuIiwKKyAgICAiYmFja2dyb3VuZC1pbWFnZSI6
ICJUaGUgQ1NTIGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgc2V0cyBvbmUgb3Igc2V2ZXJhbCBi
YWNrZ3JvdW5kIGltYWdlcyBmb3IgYW4gZWxlbWVudC4gVGhlIGltYWdlcyBhcmUgZHJhd24gb24g
c3RhY2tpbmcgY29udGV4dCBsYXllcnMgb24gdG9wIG9mIGVhY2ggb3RoZXIuIFRoZSBmaXJzdCBs
YXllciBzcGVjaWZpZWQgaXMgZHJhd24gYXMgaWYgaXQgaXMgY2xvc2VzdCB0byB0aGUgdXNlci4i
LAorICAgICJiYWNrZ3JvdW5kLXBvc2l0aW9uIjogIlRoZSBiYWNrZ3JvdW5kLXBvc2l0aW9uIENT
UyBwcm9wZXJ0eSBzZXRzIHRoZSBpbml0aWFsIHBvc2l0aW9uLCByZWxhdGl2ZSB0byB0aGUgYmFj
a2dyb3VuZCBwb3NpdGlvbiBsYXllciBkZWZpbmVkIGJ5IGJhY2tncm91bmQtb3JpZ2luIGZvciBl
YWNoIGRlZmluZWQgYmFja2dyb3VuZCBpbWFnZS4iLAorICAgICJiYWNrZ3JvdW5kLXJlcGVhdCI6
ICJUaGUgYmFja2dyb3VuZC1yZXBlYXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IGJhY2tncm91
bmQgaW1hZ2VzIGFyZSByZXBlYXRlZC4gQSBiYWNrZ3JvdW5kIGltYWdlIGNhbiBiZSByZXBlYXRl
ZCBhbG9uZyB0aGUgaG9yaXpvbnRhbCBheGlzLCB0aGUgdmVydGljYWwgYXhpcywgYm90aCBheGVz
LCBvciBub3QgcmVwZWF0ZWQgYXQgYWxsLiIsCisgICAgImJhY2tncm91bmQtc2l6ZSI6ICJUaGUg
YmFja2dyb3VuZC1zaXplIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJh
Y2tncm91bmQgaW1hZ2VzLiBUaGUgc2l6ZSBvZiB0aGUgaW1hZ2UgY2FuIGJlIGZ1bGx5IGNvbnN0
cmFpbmVkIG9yIG9ubHkgcGFydGlhbGx5IGluIG9yZGVyIHRvIHByZXNlcnZlIGl0cyBpbnRyaW5z
aWMgcmF0aW8uIiwKKyAgICAiYm9yZGVyLWJvdHRvbS1jb2xvciI6ICJUaGUgYm9yZGVyLWJvdHRv
bS1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBib3JkZXIg
b2YgYW4gZWxlbWVudC4gTm90ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBDU1Mg
cHJvcGVydGllcyBib3JkZXItY29sb3Igb3IgYm9yZGVyLWJvdHRvbSBhcmUgbW9yZSBjb252ZW5p
ZW50IGFuZCBwcmVmZXJhYmxlLiIsCisgICAgImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiOiAi
VGhlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5k
aW5nIG9mIHRoZSBib3R0b20tbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQuIFRoZSByb3VuZGlu
ZyBjYW4gYmUgYSBjaXJjbGUgb3IgYW4gZWxsaXBzZSwgb3IgaWYgb25lIG9mIHRoZSB2YWx1ZSBp
cyAwIG5vIHJvdW5kaW5nIGlzIGRvbmUgYW5kIHRoZSBjb3JuZXIgaXMgc3F1YXJlLiIsCisgICAg
ImJvcmRlci1ib3R0b20tc3R5bGUiOiAiVGhlIGJvcmRlci1ib3R0b20tc3R5bGUgQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYSBib3guIiwK
KyAgICAiYm9yZGVyLWJvdHRvbS13aWR0aCI6ICJUaGUgYm9yZGVyLWJvdHRvbS13aWR0aCBDU1Mg
cHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYSBib3guIiwK
KyAgICAiYm9yZGVyLWNvbG9yIjogIlRoZSBib3JkZXItY29sb3IgQ1NTIHByb3BlcnR5IGlzIGEg
c2hvcnRoYW5kIGZvciBzZXR0aW5nIHRoZSBjb2xvciBvZiB0aGUgZm91ciBzaWRlcyBvZiBhbiBl
bGVtZW50J3MgYm9yZGVyOiBib3JkZXItdG9wLWNvbG9yLCBib3JkZXItcmlnaHQtY29sb3IsIGJv
cmRlci1ib3R0b20tY29sb3IsIGJvcmRlci1sZWZ0LWNvbG9yIiwKKyAgICAiYm9yZGVyLWxlZnQt
Y29sb3IiOiAiVGhlIGJvcmRlci1sZWZ0LWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xv
ciBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBj
YXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzwqBib3JkZXItY29sb3Igb3IgYm9yZGVy
LWxlZnQgYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXIt
bGVmdC1zdHlsZSI6ICJUaGUgYm9yZGVyLWxlZnQtc3R5bGUgQ1NTIHByb3BlcnR5IHNldHMgdGhl
IGxpbmUgc3R5bGUgb2YgdGhlIGxlZnQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1s
ZWZ0LXdpZHRoIjogIlRoZSBib3JkZXItbGVmdC13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUg
d2lkdGggb2YgdGhlIGxlZnQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1yYWRpdXMi
OiAiVGhlIGJvcmRlci1yYWRpdXMgQ1NTIHByb3BlcnR5IGFsbG93cyBXZWIgYXV0aG9ycyB0byBk
ZWZpbmUgaG93IHJvdW5kZWQgYm9yZGVyIGNvcm5lcnMgYXJlLiBUaGUgY3VydmUgb2YgZWFjaCBj
b3JuZXIgaXMgZGVmaW5lZCB1c2luZyBvbmUgb3IgdHdvIHJhZGlpLCBkZWZpbmluZyBpdHMgc2hh
cGU6IGNpcmNsZSBvciBlbGxpcHNlLiIsCisgICAgImJvcmRlci1yaWdodC1jb2xvciI6ICJUaGUg
Ym9yZGVyLXJpZ2h0LWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgcmln
aHQgYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9y
dGhhbmQgQ1NTIHByb3BlcnRpZXPCoCBib3JkZXItY29sb3Igb3IgYm9yZGVyLXJpZ2h0IGFyZSBt
b3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLXJpZ2h0LXN0eWxl
IjogIlRoZSBib3JkZXItcmlnaHQtc3R5bGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGxpbmUgc3R5
bGUgb2YgdGhlIHJpZ2h0IGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItcmlnaHQtd2lk
dGgiOiAiVGhlIGJvcmRlci1yaWdodC13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGgg
b2YgdGhlIHJpZ2h0IGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItc3R5bGUiOiAiVGhl
IGJvcmRlci1zdHlsZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGlu
ZyB0aGUgbGluZSBzdHlsZSBmb3IgYWxsIGZvdXIgc2lkZXMgb2YgdGhlIGVsZW1lbnRzIGJvcmRl
ci4iLAorICAgICJib3JkZXItdG9wLWNvbG9yIjogIlRoZSBib3JkZXItdG9wLWNvbG9yIENTUyBw
cm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGJvcmRlciBvZiBhbiBlbGVtZW50LiBO
b3RlIHRoYXQgaW4gbWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzIGJvcmRl
ci1jb2xvciBvciBib3JkZXItdG9wIGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFibGUu
IiwKKyAgICAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLXRvcC1sZWZ0LXJh
ZGl1cyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgcm91bmRpbmcgb2YgdGhlIHRvcC1sZWZ0IGNvcm5l
ciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNhbiBiZSBhIGNpcmNsZSBvciBhbiBlbGxp
cHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAsbm8gcm91bmRpbmcgaXMgZG9uZSBhbmQg
dGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiAi
VGhlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSByb3VuZGlu
ZyBvZiB0aGUgdG9wLXJpZ2h0IGNvcm5lciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNh
biBiZSBhIGNpcmNsZSBvciBhbiBlbGxpcHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAg
bm8gcm91bmRpbmcgaXMgZG9uZSBhbmQgdGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9y
ZGVyLXRvcC1zdHlsZSI6ICJUaGUgYm9yZGVyLXRvcC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0
aGUgbGluZSBzdHlsZSBvZiB0aGUgdG9wIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXIt
dG9wLXdpZHRoIjogIlRoZSBib3JkZXItdG9wLXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3
aWR0aCBvZiB0aGUgdG9wIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItd2lkdGgiOiAi
VGhlIGJvcmRlci13aWR0aCBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIG9m
IGEgYm94LiBVc2luZyB0aGUgc2hvcnRoYW5kIHByb3BlcnR5IGJvcmRlciBpcyBvZnRlbiBtb3Jl
IGNvbnZlbmllbnQuIiwKKyAgICAiYm90dG9tIjogIlRoZSBib3R0b20gQ1NTIHByb3BlcnR5IHBh
cnRpY2lwYXRlcyBpbiBzcGVjaWZ5aW5nIHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1l
bnRzLiIsCisgICAgImJveC1zaGFkb3ciOiAiVGhlIGJveC1zaGFkb3cgcHJvcGVydHkgZGVzY3Jp
YmVzIG9uZSBvciBtb3JlIHNoYWRvdyBlZmZlY3RzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qu
IEl0IGVuYWJsZXMgeW91IHRvIGNhc3QgYSBkcm9wIHNoYWRvdyBmcm9tIHRoZSBmcmFtZSBvZiBh
bG1vc3QgYW55IGVsZW1lbnQuIElmIGEgYm9yZGVyLXJhZGl1cyBpcyBzcGVjaWZpZWQgb24gdGhl
IGVsZW1lbnQgd2l0aCBhIGJveCBzaGFkb3csIHRoZSBib3ggc2hhZG93IHRha2VzIG9uIHRoZSBz
YW1lIHJvdW5kZWQgY29ybmVycy4gVGhlIHotb3JkZXJpbmcgb2YgbXVsdGlwbGUgYm94IHNoYWRv
d3MgaXMgdGhlIHNhbWUgYXMgbXVsdGlwbGUgdGV4dCBzaGFkb3dzICh0aGUgZmlyc3Qgc3BlY2lm
aWVkIHNoYWRvdyBpcyBvbiB0b3ApLiIsCisgICAgImJveC1zaXppbmciOiAiVGhlIGJveC1zaXpp
bmcgcHJvcGVydHkgaXMgdXNlZCB0byBhbHRlciB0aGUgZGVmYXVsdCBDU1MgYm94IG1vZGVsIHVz
ZWQgdG8gY2FsY3VsYXRlIHdpZHRocyBhbmQgaGVpZ2h0cyBvZiBlbGVtZW50cy4gSXQgaXMgcG9z
c2libGUgdG8gdXNlIHRoaXMgcHJvcGVydHkgdG8gZW11bGF0ZSB0aGUgYmVoYXZpb3Igb2YgYnJv
d3NlcnMgdGhhdCBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdGhlIENTUyBib3ggbW9kZWwgc3Bl
Y2lmaWNhdGlvbi4iLAorICAgICJjbGVhciI6ICJUaGUgY2xlYXIgQ1NTIHByb3BlcnR5IHNwZWNp
ZmllcyB3aGV0aGVyIGFuIGVsZW1lbnQgY2FuIGJlIG5leHQgdG8gZmxvYXRpbmcgZWxlbWVudHMg
dGhhdCBwcmVjZWRlIGl0IG9yIG11c3QgYmUgbW92ZWQgZG93biAoY2xlYXJlZCkgYmVsb3cgdGhl
bS4gVGhlIGNsZWFyIHByb3BlcnR5IGFwcGxpZXMgdG8gYm90aCBmbG9hdGluZyBhbmQgbm9uLWZs
b2F0aW5nIGVsZW1lbnRzLiIsCisgICAgImNvbG9yIjogIlRoZSBjb2xvciBwcm9wZXJ0eSBzZXRz
IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQncyB0ZXh0IGNvbnRlbnQsIGFuZCBp
dHMgZGVjb3JhdGlvbnMuIEl0IGRvZXNuJ3QgYWZmZWN0IGFueSBvdGhlciBjaGFyYWN0ZXJpc3Rp
YyBvZiB0aGUgZWxlbWVudDsgaXQgc2hvdWxkIHJlYWxseSBiZSBjYWxsZWQgdGV4dC1jb2xvciBh
bmQgd291bGQgaGF2ZSBiZWVuIG5hbWVkIHNvLCBzYXZlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMg
YW5kIGl0cyBhcHBlYXJhbmNlIGluIENTUyBMZXZlbCAxLiIsCisgICAgImN1cnNvciI6ICJUaGUg
Y3Vyc29yIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG1vdXNlIGN1cnNvciBkaXNwbGF5ZWQg
d2hlbiB0aGUgbW91c2UgcG9pbnRlciBpcyBvdmVyIGFuIGVsZW1lbnQuIiwKKyAgICAiZGlyZWN0
aW9uIjogIlNldCB0aGUgZGlyZWN0aW9uIENTUyBwcm9wZXJ0eSB0byBtYXRjaCB0aGUgZGlyZWN0
aW9uIG9mIHRoZSB0ZXh0OiBydGwgZm9yIGxhbmd1YWdlcyB3cml0dGVuIGZyb20gcmlnaHQtdG8t
bGVmdCAobGlrZSBIZWJyZXcgb3IgQXJhYmljKSB0ZXh0IGFuZCBsdHIgZm9yIG90aGVyIHNjcmlw
dHMuIFRoaXMgaXMgdHlwaWNhbGx5IGRvbmUgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgKGUuZy4s
IHVzaW5nIHRoZSBkaXIgYXR0cmlidXRlIGluIEhUTUwpIHJhdGhlciB0aGFuIHRocm91Z2ggZGly
ZWN0IHVzZSBvZiBDU1MuIiwKKyAgICAiZGlzcGxheSI6ICJUaGUgZGlzcGxheSBDU1MgcHJvcGVy
dHkgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHJlbmRlcmluZyBib3ggdXNlZCBmb3IgYW4gZWxlbWVu
dC4gSW4gSFRNTCwgZGVmYXVsdCBkaXNwbGF5IHByb3BlcnR5IHZhbHVlcyBhcmUgdGFrZW4gZnJv
bSBiZWhhdmlvcnMgZGVzY3JpYmVkIGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb25zIG9yIGZyb20g
dGhlIGJyb3dzZXIvdXNlciBkZWZhdWx0IHN0eWxlc2hlZXQuIFRoZSBkZWZhdWx0IHZhbHVlIGlu
IFhNTCBpcyBpbmxpbmUuIiwKKyAgICAiZmxleC1iYXNpcyI6ICJUaGUgZmxleC1iYXNpcyBDU1Mg
cHJvcGVydHkgc3BlY2lmaWVzIHRoZSBmbGV4IGJhc2lzIHdoaWNoIGlzIHRoZSBpbml0aWFsIG1h
aW4gc2l6ZSBvZiBhIGZsZXggaXRlbS4gVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBzaXpl
IG9mIHRoZSBjb250ZW50LWJveCB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZSB1c2luZyBib3gt
c2l6aW5nLiIsCisgICAgImZsZXgtZGlyZWN0aW9uIjogIlRoZSBmbGV4LWRpcmVjdGlvbiBDU1Mg
cHJvcGVydHkgc3BlY2lmaWVzIGhvdyBmbGV4IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXgg
Y29udGFpbmVyIGRlZmluaW5nIHRoZSBtYWluIGF4aXMgYW5kIHRoZSBkaXJlY3Rpb24gKG5vcm1h
bCBvciByZXZlcnNlZCkuIiwKKyAgICAiZmxleC1ncm93IjogIlRoZSBmbGV4LWdyb3cgQ1NTIHBy
b3BlcnR5IHNwZWNpZmllcyB0aGUgZmxleCBncm93IGZhY3RvciBvZiBhIGZsZXggaXRlbS4gSXQg
c3BlY2lmaWVzIHdoYXQgYW1vdW50IG9mIHNwYWNlIGluc2lkZSB0aGUgZmxleCBjb250YWluZXIg
dGhlIGl0ZW0gc2hvdWxkIHRha2UgdXAuIiwKKyAgICAiZmxleC1zaHJpbmsiOiAiVGhlIGZsZXgt
c2hyaW5rIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGZsZXggc2hyaW5rIGZhY3RvciBvZiBh
IGZsZXggaXRlbS4iLAorICAgICJmbGV4LXdyYXAiOiAiVGhlIENTUyBmbGV4LXdyYXAgcHJvcGVy
dHkgc3BlY2lmaWVzIHdoZXRoZXIgZmxleCBpdGVtcyBhcmUgZm9yY2VkIGludG8gYSBzaW5nbGUg
bGluZSBvciBjYW4gYmUgd3JhcHBlZCBvbnRvIG11bHRpcGxlIGxpbmVzLiBJZiB3cmFwcGluZyBp
cyBhbGxvd2VkLCB0aGlzIHByb3BlcnR5IGFsc28gZW5hYmxlcyB5b3UgdG8gY29udHJvbCB0aGUg
ZGlyZWN0aW9uIGluIHdoaWNoIGxpbmVzIGFyZSBzdGFja2VkLiIsCisgICAgImZsb2F0IjogIlRo
ZSBmbG9hdCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoYXQgYW4gZWxlbWVudCBzaG91bGQgYmUg
dGFrZW4gZnJvbSB0aGUgbm9ybWFsIGZsb3cgYW5kIHBsYWNlZCBhbG9uZyB0aGUgbGVmdCBvciBy
aWdodCBzaWRlIG9mIGl0cyBjb250YWluZXIsIHdoZXJlIHRleHQgYW5kIGlubGluZSBlbGVtZW50
cyB3aWxsIHdyYXAgYXJvdW5kIGl0LiIsCisgICAgImZvbnQtZmFtaWx5IjogIlRoZSBmb250LWZh
bWlseSBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc3BlY2lmeSBhIHByaW9yaXRpemVkIGxpc3Qgb2Yg
Zm9udCBmYW1pbHkgbmFtZXMgYW5kL29yIGdlbmVyaWMgZmFtaWx5IG5hbWVzIGZvciB0aGUgc2Vs
ZWN0ZWQgZWxlbWVudC4gVmFsdWVzIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSB0byBpbmRpY2F0
ZSB0aGF0IHRoZXkgYXJlIGFsdGVybmF0aXZlcy4gVGhlIGJyb3dzZXIgd2lsbCBzZWxlY3QgdGhl
IGZpcnN0IGZvbnQgb24gdGhlIGxpc3QgdGhhdCBpcyBpbnN0YWxsZWQgb24gdGhlIGNvbXB1dGVy
IG9yIHRoYXQgY2FuIGJlIGRvd25sb2FkZWQgdXNpbmcgYSBAZm9udC1mYWNlIGF0LXJ1bGUuIiwK
KyAgICAiZm9udC1zaXplIjogIlRoZSBmb250LXNpemUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0
aGUgc2l6ZSBvZiB0aGUgZm9udC4gU2V0dGluZyB0aGUgZm9udCBzaXplIG1heSwgaW4gdHVybiwg
Y2hhbmdlIHRoZSBzaXplIG9mIG90aGVyIGl0ZW1zLCBzaW5jZSBpdCBpcyB1c2VkIHRvIGNvbXB1
dGUgdGhlIHZhbHVlIG9mIHRoZSBlbSBhbmQgZXjCoFxuIDxsZW5ndGg+IHVuaXRzLiIsCisgICAg
ImZvbnQtc3R5bGUiOiAiVGhlIGZvbnQtc3R5bGUgQ1NTIHByb3BlcnR5IGxldHMgeW91IHNlbGVj
dCBpdGFsaWMgb3Igb2JsaXF1ZSBmYWNlcyB3aXRoaW4gYSBmb250LWZhbWlseS4iLAorICAgICJm
b250LXZhcmlhbnQiOiAiVGhpcyBwcm9wZXJ0eSBhY3RzIGFzIGEgc2hvcnRoYW5kIGZvciB0aGUg
bG9uZ2hhbmQgcHJvcGVydGllczogZm9udC12YXJpYW50LWNhcHMsIGZvbnQtdmFyaWFudC1udW1l
cmljLCBmb250LXZhcmlhbnQtYWx0ZXJuYXRlcywgZm9udC12YXJpYW50LWxpZ2F0dXJlcywgYW5k
IGZvbnQtdmFyaWFudC1lYXN0LWFzaWFuLiBZb3UgY2FuIGFsc28gc2V0IHRoZSBDU1MgTGV2ZWwg
MiAoUmV2aXNpb24gMSkgdmFsdWVzIG9mIGZvbnQtdmFyaWFudCwgKHRoYXQgaXMsIG5vcm1hbCBv
ciBzbWFsbC1jYXBzKSwgYnkgdXNpbmcgdGhlIGZvbnQgc2hvcnRoYW5kLiIsCisgICAgImZvbnQt
d2VpZ2h0IjogIlRoZSBmb250LXdlaWdodCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB3ZWln
aHQgb3IgYm9sZG5lc3Mgb2YgdGhlIGZvbnQuIFNvbWUgZm9udHMgYXJlIG9ubHkgYXZhaWxhYmxl
IGluIG5vcm1hbCBhbmQgYm9sZC4iLAorICAgICJoZWlnaHQiOiAiVGhlIGhlaWdodCBDU1MgcHJv
cGVydHkgc3BlY2lmaWVzIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgYXJlYSBvZiBhbiBlbGVt
ZW50LiBUaGUgY29udGVudCBhcmVhIGlzIGluc2lkZSB0aGUgcGFkZGluZywgYm9yZGVyLCBhbmQg
bWFyZ2luIG9mIHRoZSBlbGVtZW50LiIsCisgICAgImxlZnQiOiAiVGhlIGxlZnQgQ1NTIHByb3Bl
cnR5IHNwZWNpZmllcyBwYXJ0IG9mIHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRz
LiIsCisgICAgImxldHRlci1zcGFjaW5nIjogIlRoZSBsZXR0ZXItc3BhY2luZyBDU1MgcHJvcGVy
dHkgc3BlY2lmaWVzIHNwYWNpbmcgYmVoYXZpb3IgYmV0d2VlbiB0ZXh0IGNoYXJhY3RlcnMuIiwK
KyAgICAibGluZS1oZWlnaHQiOiAiT24gYmxvY2sgbGV2ZWwgZWxlbWVudHMsIHRoZSBsaW5lLWhl
aWdodCBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGxpbmUgYm94ZXMg
d2l0aGluIHRoZSBlbGVtZW50LiIsCisgICAgIm1hcmdpbi1ib3R0b20iOiAiVGhlIG1hcmdpbi1i
b3R0b20gQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJl
cXVpcmVkIG9uIHRoZSBib3R0b20gb2YgYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBh
bHNvIGFsbG93ZWQuIiwKKyAgICAibWFyZ2luLWxlZnQiOiAiVGhlIG1hcmdpbi1sZWZ0IENTUyBw
cm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIGxlZnQgc2lkZSBv
ZiBhIGJveCBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBh
bHNvIGFsbG93ZWQuIiwKKyAgICAibWFyZ2luLXJpZ2h0IjogIlRoZSBtYXJnaW4tcmlnaHQgQ1NT
IHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVkIG9u
IHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgbmVnYXRpdmUgdmFsdWUgaXMgYWxzbyBh
bGxvd2VkLiIsCisgICAgIm1hcmdpbi10b3AiOiAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5
IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSB0b3Ag
b2YgYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAi
bWF4LWhlaWdodCI6ICJUaGUgbWF4LWhlaWdodCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUg
bWF4aW11bSBoZWlnaHQgb2YgYW4gZWxlbWVudC4gSXQgcHJldmVudHMgdGhlIHVzZWQgdmFsdWUg
b2YgdGhlIGhlaWdodCBwcm9wZXJ0eSBmcm9tIGJlY29taW5nIGxhcmdlciB0aGFuIHRoZSB2YWx1
ZSBzcGVjaWZpZWQgZm9yIG1heC1oZWlnaHQuIiwKKyAgICAibWF4LXdpZHRoIjogIlRoZSBtYXgt
d2lkdGggcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gd2lkdGggb2YgYSBnaXZl
biBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgd2lkdGggcHJvcGVy
dHkgZnJvbSBiZWNvbWluZyBsYXJnZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtYXgt
d2lkdGguIiwKKyAgICAibWluLWhlaWdodCI6ICJUaGUgbWluLWhlaWdodCBwcm9wZXJ0eSBpcyB1
c2VkIHRvIHNldCB0aGUgbWluaW11bSBoZWlnaHQgb2YgYSBnaXZlbiBlbGVtZW50LiBJdCBwcmV2
ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgaGVpZ2h0IHByb3BlcnR5IGZyb20gYmVjb21pbmcg
c21hbGxlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1pbi1oZWlnaHQuIiwKKyAgICAi
bWluLXdpZHRoIjogIlRoZSBtaW4td2lkdGggcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIG1p
bmltdW0gd2lkdGggb2YgYSBnaXZlbiBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1
ZSBvZiB0aGUgd2lkdGggcHJvcGVydHkgZnJvbSBiZWNvbWluZyBzbWFsbGVyIHRoYW4gdGhlIHZh
bHVlIHNwZWNpZmllZCBmb3IgbWluLXdpZHRoLiIsCisgICAgIm9wYWNpdHkiOiAiVGhlIG9wYWNp
dHkgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgdHJhbnNwYXJlbmN5IG9mIGFuIGVsZW1lbnQs
IHRoYXQgaXMsIHRoZSBkZWdyZWUgdG8gd2hpY2ggdGhlIGJhY2tncm91bmQgYmVoaW5kIHRoZSBl
bGVtZW50IGlzIG92ZXJsYWlkLiIsCisgICAgIm9yZGVyIjogIlRoZSBDU1Mgb3JkZXIgcHJvcGVy
dHkgc3BlY2lmaWVzIHRoZSBvcmRlciB1c2VkIHRvIGxheSBvdXQgZmxleCBpdGVtcyBpbiB0aGVp
ciBmbGV4IGNvbnRhaW5lci4gRWxlbWVudHMgYXJlIGxhaWQgb3V0IGluIHRoZcKgYXNjZW5kaW5n
IG9yZGVyIG9mIHRoZSBvcmRlciB2YWx1ZS4gRWxlbWVudHMgd2l0aCB0aGUgc2FtZSBvcmRlciB2
YWx1ZSBhcmUgbGFpZCBvdXQgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRo
ZSBzb3VyY2UgY29kZS4iLAorICAgICJvdXRsaW5lLWNvbG9yIjogIlRoZSBvdXRsaW5lLWNvbG9y
IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgb3V0bGluZSBvZiBhbiBlbGVtZW50
LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywgb3V0
c2lkZSB0aGUgYm9yZGVyIGVkZ2UsIHRvIG1ha2UgdGhlIGVsZW1lbnQgc3RhbmQgb3V0LiIsCisg
ICAgIm91dGxpbmUtb2Zmc2V0IjogIlRoZSBvdXRsaW5lLW9mZnNldCBDU1MgcHJvcGVydHkgaXMg
dXNlZCB0byBzZXQgc3BhY2UgYmV0d2VlbiBhbiBvdXRsaW5lIGFuZCB0aGUgZWRnZSBvciBib3Jk
ZXIgb2YgYW4gZWxlbWVudC4gQW4gb3V0bGluZSBpcyBhIGxpbmUgdGhhdCBpcyBkcmF3biBhcm91
bmQgZWxlbWVudHMsIG91dHNpZGUgdGhlIGJvcmRlciBlZGdlLiIsCisgICAgIm91dGxpbmUtc3R5
bGUiOiAiVGhlIG91dGxpbmUtc3R5bGUgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBz
dHlsZSBvZiB0aGUgb3V0bGluZSBvZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0
aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UsIHRv
IG1ha2UgdGhlIGVsZW1lbnQgc3RhbmQgb3V0LiIsCisgICAgIm91dGxpbmUtd2lkdGgiOiAiVGhl
IG91dGxpbmUtd2lkdGggQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSB3aWR0aCBvZiB0
aGUgb3V0bGluZSBvZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRy
YXduIGFyb3VuZCBlbGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UsIHRvIG1ha2UgdGhl
IGVsZW1lbnQgc3RhbmQgb3V0OiIsCisgICAgIm92ZXJmbG93IjogIlRoZSBvdmVyZmxvdyBwcm9w
ZXJ0eSBzcGVjaWZpZXMgd2hldGhlciB0byBjbGlwIGNvbnRlbnQsIHJlbmRlciBzY3JvbGxiYXJz
IG9yIGp1c3QgZGlzcGxheSBjb250ZW50IHdoZW4gaXQgb3ZlcmZsb3dzIGl0cyBibG9jayBsZXZl
bCBjb250YWluZXIuIiwKKyAgICAicGFkZGluZy1ib3R0b20iOiAiVGhlIHBhZGRpbmctYm90dG9t
IENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIGhlaWdodCBvZiB0aGUgcGFkZGlu
ZyBhcmVhIGF0IHRoZSBib3R0b20gb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0
aGUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXQncyBib3Jk
ZXIuIENvbnRyYXJ5IHRvIG1hcmdpbi1ib3R0b20gdmFsdWVzLCBuZWdhdGl2ZSB2YWx1ZXMgb2Yg
cGFkZGluZy1ib3R0b20gYXJlIGludmFsaWQuIiwKKyAgICAicGFkZGluZy1sZWZ0IjogIlRoZSBw
YWRkaW5nLWxlZnQgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgcGFkZGluZyBz
cGFjZSByZXF1aXJlZCBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIFRoZSBwYWRkaW5n
IGFyZWEgaXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYW5k
IGl0J3MgYm9yZGVyLiBBIG5lZ2F0aXZlIHZhbHVlIGlzIG5vdCBhbGxvd2VkLiIsCisgICAgInBh
ZGRpbmctcmlnaHQiOiAiVGhlIHBhZGRpbmctcmlnaHQgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1l
bnQgc2V0cyB0aGUgcGFkZGluZyBzcGFjZSByZXF1aXJlZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiBh
biBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250
ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdHMgYm9yZGVyLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5v
dCBhbGxvd2VkLiIsCisgICAgInBhZGRpbmctdG9wIjogIlRoZSBwYWRkaW5nLXRvcCBDU1MgcHJv
cGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRo
ZSB0b3Agb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3BhY2UgYmV0d2Vl
biB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXRzIGJvcmRlci4gQ29udHJhcnkgdG8g
bWFyZ2luLXRvcCB2YWx1ZXMsIG5lZ2F0aXZlIHZhbHVlcyBvZiBwYWRkaW5nLXRvcCBhcmUgaW52
YWxpZC4iLAorICAgICJwb3NpdGlvbiI6ICJUaGUgcG9zaXRpb24gQ1NTIHByb3BlcnR5IGNob29z
ZXMgYWx0ZXJuYXRpdmUgcnVsZXMgZm9yIHBvc2l0aW9uaW5nIGVsZW1lbnRzLCBkZXNpZ25lZCB0
byBiZSB1c2VmdWwgZm9yIHNjcmlwdGVkIGFuaW1hdGlvbiBlZmZlY3RzLiIsCisgICAgInJpZ2h0
IjogIlRoZSByaWdodCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9u
IG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAidGV4dC1hbGlnbiI6ICJUaGUgdGV4dC1h
bGlnbiBDU1MgcHJvcGVydHkgZGVzY3JpYmVzIGhvdyBpbmxpbmUgY29udGVudCBsaWtlIHRleHQg
aXMgYWxpZ25lZCBpbiBpdHMgcGFyZW50IGJsb2NrIGVsZW1lbnQuIHRleHQtYWxpZ24gZG9lcyBu
b3QgY29udHJvbCB0aGUgYWxpZ25tZW50IG9mIGJsb2NrIGVsZW1lbnRzIGl0c2VsZiwgb25seSB0
aGVpciBpbmxpbmUgY29udGVudC4iLAorICAgICJ0ZXh0LWRlY29yYXRpb24iOiAiVGhlIHRleHQt
ZGVjb3JhdGlvbiBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHRleHQgZm9ybWF0dGlu
ZyB0byB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5lLXRocm91Z2ggb3IgYmxpbmsuIFVuZGVybGlu
ZSBhbmQgb3ZlcmxpbmUgZGVjb3JhdGlvbnMgYXJlIHBvc2l0aW9uZWQgdW5kZXIgdGhlIHRleHQs
IGxpbmUtdGhyb3VnaCBvdmVyIGl0LiIsCisgICAgInRleHQtaW5kZW50IjogIlRoZSB0ZXh0LWlu
ZGVudCBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IG11Y2ggaG9yaXpvbnRhbCBzcGFjZSBzaG91bGQg
YmUgbGVmdCBiZWZvcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdGV4
dCBjb250ZW50IG9mIGFuIGVsZW1lbnQuIiwKKyAgICAidGV4dC1zaGFkb3ciOiAiVGhlIHRleHQt
c2hhZG93IHByb3BlcnR5IGFkZHMgc2hhZG93cyB0byB0ZXh0LiBJdCBhY2NlcHRzIGEgY29tbWEt
c2VwYXJhdGVkIGxpc3Qgb2Ygc2hhZG93cyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0ZXh0IGFuZCB0
ZXh0LWRlY29yYXRpb25zIG9mIHRoZSBlbGVtZW50LiIsCisgICAgInRleHQtdHJhbnNmb3JtIjog
IlRoZSB0ZXh0LXRyYW5zZm9ybSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyB0byBjYXBpdGFs
aXplIGFuIGVsZW1lbnQncyB0ZXh0LiBJdCBjYW4gYmUgdXNlZCB0byBtYWtlIHRleHQgYXBwZWFy
IGluIGFsbC11cHBlcmNhc2Ugb3IgYWxsLWxvd2VyY2FzZSwgb3Igd2l0aCBlYWNoIHdvcmQgY2Fw
aXRhbGl6ZWQuIiwKKyAgICAidG9wIjogIlRoZSB0b3AgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBw
YXJ0IG9mIHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiBJdCBoYXMgbm8gZWZm
ZWN0IG9uIG5vbi1wb3NpdGlvbmVkIGVsZW1lbnRzLiIsCisgICAgInRyYW5zaXRpb24tZGVsYXki
OiAiVGhlIHRyYW5zaXRpb24tZGVsYXkgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBhbW91bnQgb2Yg
dGltZSB0byB3YWl0IGJldHdlZW4gYSBjaGFuZ2UgYmVpbmcgcmVxdWVzdGVkIHRvIGEgcHJvcGVy
dHkgdGhhdCBpcyB0byBiZSB0cmFuc2l0aW9uZWQgYW5kIHRoZSBzdGFydCBvZiB0aGUgdHJhbnNp
dGlvbiBlZmZlY3QuIiwKKyAgICAidHJhbnNpdGlvbi1kdXJhdGlvbiI6ICJUaGUgdHJhbnNpdGlv
bi1kdXJhdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBv
ciBtaWxsaXNlY29uZHMgYSB0cmFuc2l0aW9uIGFuaW1hdGlvbiBzaG91bGQgdGFrZSB0byBjb21w
bGV0ZS4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIDBzLCBtZWFuaW5nIHRoYXQgbm8gYW5pbWF0
aW9uIHdpbGwgb2NjdXIuIiwKKyAgICAidHJhbnNpdGlvbi1wcm9wZXJ0eSI6ICJUaGUgdHJhbnNp
dGlvbi1wcm9wZXJ0eSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lcyBv
ZiBDU1MgcHJvcGVydGllcyB0byB3aGljaCBhIHRyYW5zaXRpb24gZWZmZWN0IHNob3VsZCBiZSBh
cHBsaWVkLiIsCisgICAgInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIjogIlRoZSB0cmFuc2l0
aW9uLXRpbWluZy1mdW5jdGlvbiBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRlc2NyaWJlIGhvdyB0aGUg
aW50ZXJtZWRpYXRlIHZhbHVlcyBvZiB0aGUgQ1NTwqBwcm9wZXJ0aWVzIGJlaW5nIGFmZmVjdGVk
IGJ5IGEgdHJhbnNpdGlvbiBlZmZlY3QgYXJlIGNhbGN1bGF0ZWQuIFRoaXMgaW4gZXNzZW5jZSBs
ZXRzIHlvdSBlc3RhYmxpc2ggYW4gYWNjZWxlcmF0aW9uIGN1cnZlLCBzbyB0aGF0IHRoZSBzcGVl
ZCBvZiB0aGUgdHJhbnNpdGlvbiBjYW4gdmFyeSBvdmVyIGl0cyBkdXJhdGlvbi4iLAorICAgICJ2
ZXJ0aWNhbC1hbGlnbiI6ICJUaGUgdmVydGljYWwtYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmll
cyB0aGUgdmVydGljYWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4i
LAorICAgICJ2aXNpYmlsaXR5IjogIlRoZSB2aXNpYmlsaXR5IHByb3BlcnR5IGNhbiBiZSB1c2Vk
IHRvIGhpZGUgYW4gZWxlbWVudCB3aGlsZSBsZWF2aW5nIHRoZSBzcGFjZSB3aGVyZSBpdCB3b3Vs
ZCBoYXZlIGJlZW4uIEl0IGNhbiBhbHNvIGhpZGUgcm93cyBvciBjb2x1bW5zIG9mIGEgdGFibGUu
IiwKKyAgICAid2hpdGUtc3BhY2UiOiAiVGhlIHdoaXRlLXNwYWNlIHByb3BlcnR5IGlzIHVzZWQg
dG8gZGVzY3JpYmUgaG93IHdoaXRlc3BhY2UgaW5zaWRlIHRoZSBlbGVtZW50IGlzIGhhbmRsZWQu
IiwKKyAgICAid2lkdGgiOiAiVGhlIHdpZHRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdp
ZHRoIG9mIHRoZSBjb250ZW50IGFyZWEgb2YgYW4gZWxlbWVudC4gVGhlIGNvbnRlbnQgYXJlYSBp
cyBpbnNpZGUgdGhlIHBhZGRpbmcsIGJvcmRlciwgYW5kIG1hcmdpbiBvZiB0aGUgZWxlbWVudC4i
LAorICAgICJ3b3JkLXNwYWNpbmciOiAiVGhlIHdvcmQtc3BhY2luZ8KgcHJvcGVydHkgc3BlY2lm
aWVzIHNwYWNpbmcgYmVoYXZpb3IgYmV0d2VlbiB0YWdzIGFuZCB3b3Jkcy4iLAorICAgICJ6LWlu
ZGV4IjogIlRoZSB6LWluZGV4IHByb3BlcnR5IHNwZWNpZmllcyB0aGUgei1vcmRlciBvZiBhbiBl
bGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMuIFdoZW4gZWxlbWVudHMgb3ZlcmxhcCwgei1vcmRl
ciBkZXRlcm1pbmVzIHdoaWNoIG9uZSBjb3ZlcnMgdGhlIG90aGVyLiBBbiBlbGVtZW50IHdpdGgg
YSBsYXJnZXIgei1pbmRleCBnZW5lcmFsbHkgY292ZXJzIGFuIGVsZW1lbnQgd2l0aCBhIGxvd2Vy
IG9uZS4iCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVk
aXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGE2MGFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcwpAQCAtMCwwICsxLDE1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yID0g
Y2xhc3MgVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcgoreworICAgIGNvbnN0cnVj
dG9yKHByb3BlcnR5TmFtZXMsIHRleHQsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAg
c3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgdHJ1ZSwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAg
ICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJzY3JvbGwiLCB0aGlzLl9oaWRlQ29tcGxldGlvbnMuYmluZCh0aGlzKSk7CisKKyAgICAgICAg
dGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Q29tcGxldGlvbnNDb250cm9sbGVyKHRoaXMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29u
dHJvbGxlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRp
b25zQ29udHJvbGxlci5FdmVudC5Db21wbGV0aW9uU2VsZWN0ZWQsIHRoaXMuX2NvbXBsZXRpb25D
bGlja2VkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl93cmFwV2l0aFF1b3Rlc1JlZ0V4cCA9IC9e
W2EtekEtWlwtXSskLzsKKyAgICAgICAgdGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCA9
IC9bXCJcJ10vZzsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGNvbXBsZXRpb25TdWdn
ZXN0aW9uc09uSXRlbUNyZWF0ZWQoZWxlbWVudCwgaXRlbSkKKyAgICB7CisgICAgICAgIGVsZW1l
bnQuc3R5bGUuZm9udEZhbWlseSA9IGl0ZW07CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRp
b25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5o
YXNDb21wbGV0aW9uczsKKyAgICB9CisKKyAgICBzZXQgY29tcGxldGlvbnMoY29tcGxldGlvbnMp
CisgICAgeworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5jb21wbGV0aW9ucyA9
IGNvbXBsZXRpb25zOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9tb2RpZnlDb21t
YVNlcGFyYXRlZEtleXdvcmQodGV4dCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fd3JhcFdp
dGhRdW90ZXNSZWdFeHAudGVzdCh0ZXh0KSkKKyAgICAgICAgICAgIHRleHQgPSAiXCIiICsgdGV4
dCArICJcIiI7CisKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgX2FkZENvbW1h
U2VwYXJhdGVkS2V5d29yZCh2YWx1ZSwgaW5kZXgpCisgICAgeworICAgICAgICBpZiAodmFsdWUp
CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5fcmVtb3ZlV3JhcHBlZFF1
b3Rlc1JlZ0V4cCwgIiIpOworCisgICAgICAgIGxldCB2YWx1ZUVsZW1lbnQgPSBzdXBlci5fYWRk
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlLCBpbmRleCk7CisgICAgICAgIHZhbHVlRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVl
SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB0aGlzLl9pdGVtRWRpdG9yS2V5RG93biwgdGhpcyk7
CisgICAgICAgIHZhbHVlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5FdmVudC5LZXl3b3JkQ2hhbmdlZCwgdGhpcy5faXRl
bUVkaXRvcktleXdvcmRDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2
ZW50LkVkaXRvckJsdXJyZWQsIHRoaXMuX2hpZGVDb21wbGV0aW9ucywgdGhpcyk7CisgICAgICAg
IHJldHVybiB2YWx1ZUVsZW1lbnQ7CisgICAgfQorCisgICAgX2FkZEVtcHR5Q29tbWFTZXBhcmF0
ZWRLZXl3b3JkKCkKKyAgICB7CisgICAgICAgIGxldCBuZXdJdGVtID0gc3VwZXIuX2FkZEVtcHR5
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCk7CisgICAgICAgIG5ld0l0ZW0uc2hvd0tleXdvcmRFZGl0
b3IoKTsKKyAgICB9CisKKyAgICBfY29tcGxldGlvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAg
ICAgICB0aGlzLnZhbHVlID0gZXZlbnQuZGF0YS50ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURp
ZENoYW5nZSgpOworICAgIH0KKworICAgIF9pdGVtRWRpdG9yS2V5RG93bihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIudmlzaWJsZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQga2V5ID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAm
JiBldmVudC5kYXRhLmtleTsKKyAgICAgICAgaWYgKCFrZXkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKGtleSA9PT0gIkVudGVyIiB8fCBrZXkgPT09ICJUYWIiKSB7CisgICAg
ICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5
d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVl
RWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHNlbGVjdGVk
VHJlZUVsZW1lbnQudXBkYXRlTWFpblRpdGxlKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmN1
cnJlbnRDb21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVy
LmhpZGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChr
ZXkgPT09ICJFc2NhcGUiKSB7CisgICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJV
cCIpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAi
RG93biIpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9pdGVtRWRpdG9y
S2V5d29yZENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0NvbXBsZXRpb25z
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl92YWx1
ZURpZENoYW5nZSgpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBsZXQgdHJlZUl0ZW0gPSB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNl
bGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgIGlmICghdHJlZUl0ZW0pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZSh0
cmVlSXRlbS5tYWluVGl0bGUpKSB7CisgICAgICAgICAgICBsZXQgYm91bmRzID0gdHJlZUl0ZW0u
ZWRpdG9yQm91bmRzKDIpOworICAgICAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5zaG93
KGJvdW5kcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGlkZUNvbXBsZXRpb25zKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICB9CisK
KyAgICBfY3JlYXRlTmV3TGlzdEl0ZW0odmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbSh2YWx1ZSk7CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZjIyYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlRm9udEZhbWlseVRyZWVJdGVtLmpzCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtID0gY2xhc3MgVmlzdWFs
U3R5bGVGb250RmFtaWx5VHJlZUl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50Cit7CisgICAgY29uc3RydWN0b3IodGV4dCkKKyAgICB7CisgICAgICAgIHN1cGVyKFtX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuTGlzdEl0
ZW1DbGFzc05hbWUsICJ2aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtIl0sIHRleHQp
OworCisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmNsYXNzTGlzdC5hZGQoInZp
c3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvciIpOworICAgICAg
ICB0aGlzLl9rZXl3b3JkRWRpdG9yLnBsYWNlaG9sZGVyID0gIigiICsgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlIikgKyAiKSI7Cisg
ICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3Iuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0
aGlzLl9rZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXl3
b3JkRWRpdG9yS2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRv
ci5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2tleXdvcmRFZGl0b3JLZXlVcC5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJi
bHVyIiwgdGhpcy5fa2V5d29yZEVkaXRvckJsdXJyZWQuYmluZCh0aGlzKSk7CisgICAgfQorCisg
ICAgLy8gUHVibGljCisKKyAgICBlZGl0b3JCb3VuZHMocGFkZGluZykKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0
aGlzLl9rZXl3b3JkRWRpdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgcmV0
dXJuIGJvdW5kcy5wYWQocGFkZGluZyB8fCAwKTsKKyAgICB9CisKKyAgICB1cGRhdGVNYWluVGl0
bGUodGV4dCkKKyAgICB7CisgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5fbGlzdEl0ZW1O
b2RlLnN0eWxlLmZvbnRGYW1pbHkgPSB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlID0gdGV4dDsK
KworICAgICAgICBsZXQgaGFzVGV4dCA9IHRleHQgJiYgdGV4dC5sZW5ndGg7CisgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QudG9nZ2xlKCJuby12YWx1ZSIsICFoYXNUZXh0KTsK
KyAgICAgICAgaWYgKCFoYXNUZXh0KQorICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMu
X2tleXdvcmRFZGl0b3IucGxhY2Vob2xkZXI7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2
ZW50LktleXdvcmRDaGFuZ2VkKTsKKyAgICB9CisKKyAgICBzaG93S2V5d29yZEVkaXRvcigpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLnN1YnRpdGxlID0gIiI7CisgICAgICAgIHRoaXMuX2xp
c3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJlZGl0b3ItaGlkZGVuIik7CisgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7CisKKyAgICAgICAgdGhp
cy5fa2V5d29yZEVkaXRvci52YWx1ZSA9IHRoaXMuX21haW5UaXRsZTsKKyAgICAgICAgdGhpcy5f
a2V5d29yZEVkaXRvci5zZWxlY3QoKTsKKyAgICB9CisKKyAgICBoaWRlS2V5d29yZEVkaXRvcigp
CisgICAgeworICAgICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlTWFpblRpdGxlKHRoaXMuX2tleXdvcmRF
ZGl0b3IudmFsdWUpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgi
ZWRpdG9yLWhpZGRlbiIpOworICAgIH0KKworICAgIGdldCBrZXl3b3JkRWRpdG9ySGlkZGVuKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmNvbnRh
aW5zKCJlZGl0b3ItaGlkZGVuIik7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBv
bmF0dGFjaCgpCisgICAgeworICAgICAgICBzdXBlci5vbmF0dGFjaCgpOworCisgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5zdHlsZS5mb250RmFtaWx5ID0gdGhpcy5fbWFpblRpdGxlOworICAg
ICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRlbiIpOwor
ICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fa2V5d29yZEVkaXRv
cik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuc2hvd0tleXdvcmRFZGl0b3IuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgb25kZXNl
bGVjdCgpCisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3b3JkRWRpdG9yKCk7CisgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlEb3duKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBsZXQga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7CisgICAgICAgIGxl
dCBlbnRlcktleUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRW50ZXIu
a2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVudGVyS2V5Q29kZSkgeworICAgICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImVkaXRvci1oaWRkZW4iKTsK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAi
RW50ZXIifSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQg
ZXNjYXBlS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUu
a2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVzY2FwZUtleUNvZGUpIHsKKyAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiRXNjYXBl
In0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHRhYktl
eUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuVGFiLmtleUNvZGU7Cisg
ICAgICAgIGlmIChrZXlDb2RlID09PSB0YWJLZXlDb2RlKSB7CisgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgdGhpcy5fZG9udEZpcmVLZXlVcCA9IHRydWU7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uRXZlbnQuRWRpdG9yS2V5RG93biwge2tleTog
IlRhYiJ9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBr
ZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOworICAgICAgICBpZiAoa2V5ID09PSAiVXAiIHx8IGtl
eSA9PT0gIkRvd24iKSB7CisgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
ICAgICAgICAgdGhpcy5fZG9udEZpcmVLZXlVcCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5
VHJlZUl0ZW0uRXZlbnQuRWRpdG9yS2V5RG93biwge2tleX0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2ZW50LkVkaXRvcktleURv
d24pOworICAgIH0KKworICAgIF9rZXl3b3JkRWRpdG9yS2V5VXAoKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbiB8fCB0aGlzLl9kb250RmlyZUtleVVwKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlTWFpblRpdGxlKHRoaXMuX2tl
eXdvcmRFZGl0b3IudmFsdWUpOworICAgIH0KKworICAgIF9rZXl3b3JkRWRpdG9yQmx1cnJlZCgp
CisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3b3JkRWRpdG9yKCk7CisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlUcmVlSXRlbS5FdmVudC5FZGl0b3JCbHVycmVkKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uRXZlbnQgPSB7CisgICAgS2V5d29yZENo
YW5nZWQ6ICJ2aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktdHJlZS1pdGVtLWtleXdvcmQtY2hhbmdl
ZCIsCisgICAgRWRpdG9yS2V5RG93bjogInZpc3VhbC1zdHlsZS1mb250LWZhbWlseS10cmVlLWl0
ZW0tZWRpdG9yLWtleS1kb3duIiwKKyAgICBFZGl0b3JCbHVycmVkOiAidmlzdWFsLXN0eWxlLWZv
bnQtZmFtaWx5LXRyZWUtaXRlbS1lZGl0b3ItYmx1cnJlZCIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRD
aGVja2JveC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUtleXdvcmRDaGVja2JveC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWMxYzY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmNzcwpAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIua2V5d29yZC1jaGVja2JveCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtY2hlY2tib3ggPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IGlucHV0IHsKKyAgICB3aWR0aDog
YXV0bzsKK30KKworLyogRm9udCBWYXJpYW50ICovCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5rZXl3b3JkLWNoZWNrYm94LmZvbnQtdmFyaWFudCA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gaW5wdXQgeworICAgIG1hcmdpbi1sZWZ0OiA0N3B4Owor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWNoZWNrYm94LmZv
bnQtdmFyaWFudCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gaW5w
dXQ6OmJlZm9yZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogNXB4OworICAg
IGxlZnQ6IDA7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAgZm9udC12YXJpYW50OiBzbWFsbC1j
YXBzOworICAgIHdvcmQtc3BhY2luZzogLTJweDsKKyAgICBjb250ZW50OiAiU21hbGwgQ2FwcyI7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZUtleXdvcmRDaGVja2JveC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNDE1Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUtleXdv
cmRDaGVja2JveC5qcwpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94ID0gY2xhc3MgVmlzdWFsU3R5bGVLZXl3b3JkQ2hl
Y2tib3ggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvcgorewor
ICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRleHQsIHZhbHVlLCBsYXlvdXRSZXZlcnNl
ZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGws
ICJrZXl3b3JkLWNoZWNrYm94IiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2No
ZWNrYm94RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAg
IHRoaXMuX2NoZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKKyAgICAgICAgdGhpcy5f
Y2hlY2tib3hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3ZhbHVlRGlk
Q2hhbmdlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2NoZWNrYm94RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1
ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIikgfHwgbnVsbDsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPyB0aGlzLl92YWx1ZSA6IG51bGw7CisgICAgfQor
CisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2hlY2tib3hFbGVt
ZW50LmNoZWNrZWQgPSB2YWx1ZSA9PT0gdGhpcy5fdmFsdWU7CisgICAgfQorCisgICAgZ2V0IHN5
bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVt
ZW50cyhkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NoZWNrYm94RWxlbWVudC50YWJJ
bmRleCA9IGRpc2FibGVkID8gIi0xIiA6IG51bGw7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29y
ZEljb25MaXN0LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43N2I4NzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QuY3NzCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyIHsKKyAgICBtYXJnaW46IDFweCAwIDJweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIua2V5d29yZC1pY29uLWxpc3QgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb24tbGlzdC1jb250YWluZXIgeworICAgIGRp
c3BsYXk6IGZsZXg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdv
cmQtaWNvbi1saXN0ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
a2V5d29yZC1pY29uLWxpc3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbiB7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworICAgIHdpZHRoOiAyNnB4OworICAgIGhlaWdodDogMThweDsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7CisgICAgYm9yZGVyOiAxcHggc29s
aWQgaHNsKDAsIDAlLCA4MyUpOworICAgIGJvcmRlci1yaWdodDogbm9uZTsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1pY29uLWxpc3QgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb24tbGlzdC1jb250YWlu
ZXIgPiAua2V5d29yZC1pY29uOmZpcnN0LWNoaWxkIHsKKyAgICBib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA0cHg7CisgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OworfQorCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi1saXN0LWNvbnRh
aW5lciA+IC5rZXl3b3JkLWljb246bGFzdC1jaGlsZCB7CisgICAgYm9yZGVyLXJpZ2h0OiAxcHgg
c29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7
CisgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1pY29uLWxpc3QgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb24tbGlzdC1jb250YWluZXIgPiAu
a2V5d29yZC1pY29uOm1hdGNoZXMoLmNvbXB1dGVkLCAuc2VsZWN0ZWQpIHsKKyAgICB3aWR0aDog
MjdweDsKKyAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZDsKKyAgICBib3JkZXItY29sb3I6IGhz
bCgyMTMsIDkyJSwgNTUlKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
a2V5d29yZC1pY29uLWxpc3QgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC5rZXl3b3JkLWljb24tbGlzdC1jb250YWluZXIgPiAua2V5d29yZC1pY29uLnNlbGVjdGVk
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjEzLCA5MiUsIDU1JSk7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNvbi1saXN0ID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29yZC1pY29uLWxpc3QtY29udGFp
bmVyID4gLmtleXdvcmQtaWNvbi5zZWxlY3RlZCBzdmcgLnN0cm9rZWQgeworICAgIHN0cm9rZTog
aHNsKDAsIDEwMCUsIDEwMCUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyID4gLmtleXdvcmQtaWNvbi1saXN0LWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb24uc2VsZWN0
ZWQgc3ZnIC5maWxsZWQgeworICAgIGZpbGw6IGhzbCgwLCAxMDAlLCAxMDAlKTsKK30KKworLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIua2V5d29yZC1pY29uLWxpc3QgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLWljb24tbGlzdC1jb250
YWluZXIgPiAua2V5d29yZC1pY29uOm1hdGNoZXMoLmNvbXB1dGVkLCAuc2VsZWN0ZWQpICsgLmtl
eXdvcmQtaWNvbiB7CisgICAgd2lkdGg6IDI1cHg7CisgICAgYm9yZGVyLWxlZnQ6IG5vbmU7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmtleXdvcmQtaWNvbi1saXN0ID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAua2V5d29yZC1pY29uLWxp
c3QtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbiA+IGRpdiB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiA1cHg7CisgICAgd2lkdGg6IDE2cHg7CisgICAg
aGVpZ2h0OiAxNnB4OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5rZXl3b3JkLWljb24tbGlzdCA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmtleXdvcmQtaWNvbi1saXN0LWNvbnRhaW5lciA+
IC5rZXl3b3JkLWljb246bm90KC5zZWxlY3RlZCkgPiBkaXYgeworICAgIC13ZWJraXQtZmlsdGVy
OiBvcGFjaXR5KDAuNyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkODRhOTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5qcwpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCA9IGNsYXNzIFZpc3Vh
bFN0eWxlS2V5d29yZEljb25MaXN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3Nz
aWJsZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0
eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgImtleXdvcmQtaWNvbi1saXN0Iiwg
bGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2ljb25MaXN0Q29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2ljb25MaXN0Q29udGFp
bmVyLmNsYXNzTGlzdC5hZGQoImtleXdvcmQtaWNvbi1saXN0LWNvbnRhaW5lciIpOworCisgICAg
ICAgIHRoaXMuX2ljb25FbGVtZW50cyA9IFtdOworICAgICAgICB0aGlzLl9jb21wdXRlZEljb24g
PSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3RlZEljb24gPSBudWxsOworCisgICAgICAgIGZ1
bmN0aW9uIGRhc2hUb0NhcGl0YWwobWF0Y2gpIHsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaFsx
XS50b1VwcGVyQ2FzZSgpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHByZXR0eVByb3BlcnR5
UmVmZXJlbmNlTmFtZSA9IHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZS5jYXBpdGFsaXplKCku
cmVwbGFjZSgvKC0uKS9nLCBkYXNoVG9DYXBpdGFsKTsKKworICAgICAgICBmdW5jdGlvbiBjcmVh
dGVMaXN0SXRlbSh2YWx1ZSwgdGl0bGUpIHsKKyAgICAgICAgICAgIGxldCBpY29uQnV0dG9uRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICAgICAgaWNv
bkJ1dHRvbkVsZW1lbnQuaWQgPSB2YWx1ZTsKKyAgICAgICAgICAgIGljb25CdXR0b25FbGVtZW50
LnRpdGxlID0gdGl0bGU7CisgICAgICAgICAgICBpY29uQnV0dG9uRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJrZXl3b3JkLWljb24iKTsKKyAgICAgICAgICAgIGljb25CdXR0b25FbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlS2V5d29yZENoYW5nZWQuYmluZCh0aGlz
KSk7CisKKyAgICAgICAgICAgIGxldCBpbWFnZU5hbWUgPSB2YWx1ZSA9PT0gIm5vbmUiID8gIlZp
c3VhbFN0eWxlTm9uZSIgOiBwcmV0dHlQcm9wZXJ0eVJlZmVyZW5jZU5hbWUgKyB0aXRsZS5yZXBs
YWNlKC9ccy9nLCAiIik7CisgICAgICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdlcy8i
ICsgaW1hZ2VOYW1lICsgIi5zdmciLCBudWxsLCBudWxsLCBmdW5jdGlvbih3cmFwcGVyKSB7Cisg
ICAgICAgICAgICAgICAgaWNvbkJ1dHRvbkVsZW1lbnQuYXBwZW5kQ2hpbGQod3JhcHBlcik7Cisg
ICAgICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgICAgICByZXR1cm4gaWNvbkJ1dHRv
bkVsZW1lbnQ7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fcG9z
c2libGVWYWx1ZXMuYmFzaWMpIHsKKyAgICAgICAgICAgIGxldCBpY29uRWxlbWVudCA9IGNyZWF0
ZUxpc3RJdGVtLmNhbGwodGhpcywga2V5LCB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1trZXld
KTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25MaXN0Q29udGFpbmVyLmFwcGVuZENoaWxkKGljb25F
bGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50cy5wdXNoKGljb25FbGVtZW50
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faWNvbkxpc3RDb250YWluZXIpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
Z2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRJY29uKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSWNv
bi5pZDsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICB0aGlz
Ll9jb21wdXRlZEljb24gPSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3RlZEljb24gPSBudWxs
OworICAgICAgICBmb3IgKGxldCBpY29uIG9mIHRoaXMuX2ljb25FbGVtZW50cykgeworICAgICAg
ICAgICAgaWYgKGljb24uaWQgPT09IHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIpCisg
ICAgICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRJY29uID0gaWNvbjsKKworICAgICAgICAgICAg
aWYgKGljb24uaWQgPT09IHZhbHVlICYmICF0aGlzLl91cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlz
c2luZykKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEljb24gPSBpY29uOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGljb24uY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0
ZWQiLCAiY29tcHV0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fY29tcHV0
ZWRJY29uKQorICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRJY29uID0gdGhpcy5faWNvbkVsZW1l
bnRzWzBdOworCisgICAgICAgIGxldCBpY29uSXNTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSWNv
biAmJiB0aGlzLl9zZWxlY3RlZEljb24uY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiKTsKKyAg
ICAgICAgaWYgKCFpY29uSXNTZWxlY3RlZCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJ
Y29uID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNz
aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkSWNvbi5jbGFzc0xpc3QuYWRk
KCJjb21wdXRlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFs
dWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAgfQorCisgICAgLy8g
UHJpdmF0ZQorCisgICAgX2hhbmRsZUtleXdvcmRDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1pc3NpbmcgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC5pZDsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFu
Z2UoKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MWFjNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZUtleXdvcmRQaWNrZXIuanMKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyID0gY2xhc3MgVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IK
K3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywg
bGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0
LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgImtleXdvcmQtcGlja2VyIiwgbGF5b3V0UmV2ZXJzZWQp
OworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic2VsZWN0Iik7CisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmNs
YXNzTGlzdC5hZGQoImtleXdvcmQtcGlja2VyLXNlbGVjdCIpOworICAgICAgICBpZiAodGhpcy5f
cG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0
RWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3B0aW9uLWNsaWNrIHRvIHNo
b3cgYWxsIHZhbHVlcyIpOworCisgICAgICAgIHRoaXMuX3VuY2hhbmdlZE9wdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgdGhpcy5fdW5jaGFu
Z2VkT3B0aW9uRWxlbWVudC52YWx1ZSA9ICIiOworICAgICAgICB0aGlzLl91bmNoYW5nZWRPcHRp
b25FbGVtZW50LnRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVuY2hhbmdlZCIpOworICAg
ICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl91bmNoYW5n
ZWRPcHRpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpKTsKKworICAgICAgICB0aGlz
Ll9jcmVhdGVWYWx1ZU9wdGlvbnModGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAg
ICB0aGlzLl9hZHZhbmNlZFZhbHVlc0VsZW1lbnRzID0gbnVsbDsKKworICAgICAgICB0aGlzLl9r
ZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9r
ZXl3b3JkU2VsZWN0TW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9oYW5kbGVLZXl3
b3JkQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVi
bGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZh
bHVlKCk7CisgICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhp
cy5fc2V0VmFsdWUodmFsdWUpOworICAgIH0KKworICAgIHNldCBwbGFjZWhvbGRlcihwbGFjZWhv
bGRlcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl91cGRhdGVkVmFsdWVzLmNvbmZsaWN0aW5n
VmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc3BlY2lhbFByb3Bl
cnR5UGxhY2Vob2xkZXJFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fY2Fub25pY2FsaXplZEtl
eXdvcmRGb3JLZXkocGxhY2Vob2xkZXIpIHx8IHBsYWNlaG9sZGVyOworICAgIH0KKworICAgIGdl
dCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0
ZVN5bnRoZXNpemVkVmFsdWUoKTsKKyAgICB9CisKKyAgICB1cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcykKKyAgICB7ICAgaWYgKCF1cGRhdGVkVmFsdWVzLmNvbmZsaWN0aW5nVmFsdWVz
KSB7CisgICAgICAgICAgICBsZXQgbWlzc2luZyA9IHVwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNz
aW5nIHx8ICF1cGRhdGVkVmFsdWVzLnZhbHVlOworICAgICAgICAgICAgdGhpcy5fdW5jaGFuZ2Vk
T3B0aW9uRWxlbWVudC5zZWxlY3RlZCA9IG1pc3Npbmc7CisgICAgICAgICAgICB0aGlzLnNwZWNp
YWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSAhbWlzc2luZzsKKyAgICAgICAg
fQorCisgICAgICAgIHN1cGVyLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZ2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlOworICAgIH0KKworICAgIF9z
ZXRWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmxlbmd0
aCkgeworICAgICAgICAgICAgdGhpcy5fdW5jaGFuZ2VkT3B0aW9uRWxlbWVudC5zZWxlY3RlZCA9
IHRydWU7CisgICAgICAgICAgICB0aGlzLnNwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVu
dC5oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICh0aGlzLl91cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlzc2luZyB8fCAhdGhpcy52YWx1
ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHZhbHVlID09PSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFu
Y2VkS2V5d29yZCh2YWx1ZSkpCisgICAgICAgICAgICB0aGlzLl9hZGRBZHZhbmNlZFZhbHVlcygp
OworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlID0gdmFsdWU7Cisg
ICAgfQorCisgICAgX2dlbmVyYXRlU3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fdW5jaGFuZ2VkT3B0aW9uRWxlbWVudC5zZWxlY3RlZCA/IG51bGwgOiB0aGlz
Ll9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKyAgICB9CisKKyAgICBfaGFuZGxlS2V5d29y
ZENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAg
ICAgdGhpcy5zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuID0gIXRoaXMu
X3VuY2hhbmdlZE9wdGlvbkVsZW1lbnQuc2VsZWN0ZWQ7CisgICAgfQorCisgICAgX2tleXdvcmRT
ZWxlY3RNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQor
ICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRWYWx1ZXMoKTsKKyAgICAgICAgZWxzZSBpZiAo
IXRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZEtleXdvcmQoKSkKKyAgICAgICAgICAgIHRo
aXMuX3JlbW92ZUFkdmFuY2VkVmFsdWVzKCk7CisgICAgfQorCisgICAgX2NyZWF0ZVZhbHVlT3B0
aW9ucyh2YWx1ZXMpCisgICAgeworICAgICAgICBsZXQgYWRkZWRFbGVtZW50cyA9IFtdOworICAg
ICAgICBmb3IgKGxldCBrZXkgaW4gdmFsdWVzKSB7CisgICAgICAgICAgICBsZXQgb3B0aW9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udmFs
dWUgPSBrZXk7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9IHZhbHVlc1trZXldOworICAgICAg
ICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQob3B0aW9uKTsKKyAg
ICAgICAgICAgIGFkZGVkRWxlbWVudHMucHVzaChvcHRpb24pOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0KKworICAgIF9hZGRBZHZhbmNlZFZhbHVlcygp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpKTsKKyAgICAgICAgdGhpcy5fYWR2
YW5jZWRWYWx1ZXNFbGVtZW50cyA9IHRoaXMuX2NyZWF0ZVZhbHVlT3B0aW9ucyh0aGlzLl9wb3Nz
aWJsZVZhbHVlcy5hZHZhbmNlZCk7CisgICAgfQorCisgICAgX3JlbW92ZUFkdmFuY2VkVmFsdWVz
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5y
ZW1vdmVDaGlsZCh0aGlzLl9hZHZhbmNlZFZhbHVlc0VsZW1lbnRzWzBdLnByZXZpb3VzU2libGlu
Zyk7CisgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgdGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVt
ZW50cykKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxk
KGVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2FkdmFuY2VkVmFsdWVzRWxlbWVudHMgPSBudWxs
OworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVudHMoZGlzYWJs
ZWQpCisgICAgeworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC50YWJJbmRleCA9
IGRpc2FibGVkID8gIi0xIiA6IG51bGw7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3guY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYmUwZmUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3NzCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLmZvY3VzZWQgPiAuZm9jdXMtcmlu
ZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFw
eDsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0gMnB4KTsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAg
Ym9yZGVyLXJhZGl1czogM3B4OworICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjE1
KSAwIDFweCAwLCAwIDAgMCAzcHggaHNsYSgyMTEsIDk2JSwgNDglLCAwLjI1KTsKKyAgICBwb2lu
dGVyLWV2ZW50czogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQt
a2V5d29yZC1zZWxlY3QgeworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVmdDogMXB4OworICAgIHdp
ZHRoOiBjYWxjKDEwMCUgLSAyMHB4KTsKKyAgICBsaW5lLWhlaWdodDogMTZweDsKKyAgICB0ZXh0
LWFsaWduOiByaWdodDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lcjpub3QoLm51bWJlci1pbnB1dC1lZGl0YWJsZSkgPiAubnVtYmVyLWlucHV0LWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5u
dW1iZXItaW5wdXQtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC12YWx1ZSB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIG1hcmdpbi1yaWdodDogMXB4OworICAgIHBh
ZGRpbmc6IDAgMCAxcHggM3B4OworICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsK
KyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgb3V0bGluZTog
bm9uZTsKKyAgICBwb2ludGVyLWV2ZW50czogYWxsOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
Lm51bWJlci1pbnB1dC1jb250YWluZXIgPiBzcGFuIHsKKyAgICBtaW4td2lkdGg6IC13ZWJraXQt
Zml0LWNvbnRlbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWZlYzhlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveC5qcwpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94ID0gY2xhc3MgVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveCBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yCit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1
ZXMsIHBvc3NpYmxlVW5pdHMsIGFsbG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMs
IHBvc3NpYmxlVW5pdHMgfHwgW1dlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gVW5pdHMiKV0sICJu
dW1iZXItaW5wdXQtYm94IiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2hhc1Vu
aXRzID0gISFwb3NzaWJsZVVuaXRzOworICAgICAgICB0aGlzLl9hbGxvd05lZ2F0aXZlVmFsdWVz
ID0gISFhbGxvd05lZ2F0aXZlVmFsdWVzIHx8IGZhbHNlOworCisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibm8tdmFsdWVzIiwgIXBvc3NpYmxlVmFsdWVzIHx8
ICFwb3NzaWJsZVZhbHVlcy5sZW5ndGgpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoIm5vLXVuaXRzIiwgIXRoaXMuX2hhc1VuaXRzKTsKKworICAgICAgICBs
ZXQgZm9jdXNSaW5nRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICBmb2N1c1JpbmdFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZvY3VzLXJpbmciKTsKKyAgICAg
ICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChmb2N1c1JpbmdFbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNlbGVjdCIpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJudW1iZXItaW5wdXQta2V5d29yZC1zZWxlY3QiKTsKKyAgICAgICAgaWYgKHRoaXMu
X3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0
RWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3B0aW9uLWNsaWNrIHRvIHNo
b3cgYWxsIHVuaXRzIik7CisKKyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzKSB7Cisg
ICAgICAgICAgICB0aGlzLl9jcmVhdGVWYWx1ZU9wdGlvbnModGhpcy5fcG9zc2libGVWYWx1ZXMu
YmFzaWMpOworICAgICAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGhpcy5fcG9zc2libGVVbml0cykKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVuaXRPcHRp
b25zKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMpOworCisgICAgICAgIHRoaXMuX2FkdmFuY2Vk
VW5pdHNFbGVtZW50cyA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1c0NvbnRlbnRFbGVtZW50LmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjaGFuZ2UiLCB0aGlzLl9rZXl3b3JkQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2Js
dXJDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudCk7CisKKyAgICAgICAgdGhp
cy5fbnVtYmVyVW5pdHNDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fbnVtYmVyVW5pdHNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibnVtYmVy
LWlucHV0LWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5fdmFs
dWVOdW1iZXJJbnB1dEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LXZhbHVlIik7
CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnNwZWxsY2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiZm9jdXMiLCB0aGlzLl9mb2N1c0NvbnRlbnRFbGVtZW50LmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3du
IiwgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEtleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRo
aXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhp
cy5fbnVtYmVySW5wdXRDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl92YWx1ZU51
bWJlcklucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fYmx1ckNvbnRl
bnRFbGVtZW50LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5l
ci5hcHBlbmRDaGlsZCh0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudCk7CisKKyAgICAgICAg
dGhpcy5fdW5pdHNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICB0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl91bml0c0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX251
bWJlclVuaXRzQ29udGFpbmVyKTsKKworICAgICAgICB0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFi
bGUgPSB0cnVlOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51
bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxl
bWVudC52YWx1ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50
LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAwKTsKKyAgICAgICAgaWYgKHRoaXMuX2hhc1Vu
aXRzICYmIHRoaXMudmFsdWVJc1N1cHBvcnRlZFVuaXQoInB4IikpCisgICAgICAgICAgICB0aGlz
Ll91bml0c0VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52
YWx1ZSA9ICJweCI7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUZsb2F0KHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVl
KTsKKworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKworICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHsKKyAgICAgICAgICAgIHRoaXMuX251bWJl
cklucHV0SXNFZGl0YWJsZSA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50
LmNsYXNzTGlzdC5hZGQoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICAgICAgdGhp
cy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgICAgIHRo
aXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLnZhbHVlSXNTdXBwb3J0ZWRLZXl3
b3JkKHZhbHVlKSkgeworICAgICAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0g
ZmFsc2U7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
Im51bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVj
dEVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGdldCB1bml0cygpCisgICAgeworICAgICAgICBsZXQga2V5d29yZCA9IHRo
aXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlOworICAgICAgICBpZiAoIXRoaXMudmFsdWVJ
c1N1cHBvcnRlZFVuaXQoa2V5d29yZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
cmV0dXJuIGtleXdvcmQ7CisgICAgfQorCisgICAgc2V0IHVuaXRzKHVuaXQpCisgICAgeworICAg
ICAgICBpZiAoIXVuaXQgfHwgdW5pdCA9PT0gdGhpcy51bml0cykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIXRoaXMudmFsdWVJc1N1cHBvcnRlZFVuaXQodW5pdCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZh
bmNlZFVuaXQodW5pdCkpCisgICAgICAgICAgICB0aGlzLl9hZGRBZHZhbmNlZFVuaXRzKCk7CisK
KyAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsK
KyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUgPSB1bml0OworCisgICAg
ICAgIGlmICh0aGlzLl9oYXNVbml0cykKKyAgICAgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudC50
ZXh0Q29udGVudCA9IHVuaXQ7CisgICAgfQorCisgICAgZ2V0IHBsYWNlaG9sZGVyKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5nZXRBdHRyaWJ1
dGUoInBsYWNlaG9sZGVyIik7CisgICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCisg
ICAgeworICAgICAgICBpZiAodGV4dCA9PT0gdGhpcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgb25seU51bWVyaWNhbFRleHQgPSAhaXNOYU4odGV4dCkg
JiYgdGV4dDsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuc2V0QXR0cmli
dXRlKCJwbGFjZWhvbGRlciIsIG9ubHlOdW1lcmljYWxUZXh0IHx8IDApOworICAgIH0KKworICAg
IGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMu
X3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlOworICAgICAgICBpZiAodGhpcy5fbnVtYmVy
SW5wdXRJc0VkaXRhYmxlICYmICF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisg
ICAgICAgIGxldCBrZXl3b3JkID0gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWU7Cisg
ICAgICAgIHJldHVybiB0aGlzLnZhbHVlSXNTdXBwb3J0ZWRVbml0KGtleXdvcmQpID8gdmFsdWUg
KyAodGhpcy5faGFzVW5pdHMgPyBrZXl3b3JkIDogIiIpIDoga2V5d29yZDsKKyAgICB9CisKKyAg
ICB1cGRhdGVWYWx1ZUZyb21UZXh0KHRleHQsIHZhbHVlKQorICAgIHsKKyAgICAgICAgbGV0IG1h
dGNoID0gdGhpcy5wYXJzZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGNo
ID8gbWF0Y2hbMV0gOiB2YWx1ZTsKKyAgICAgICAgdGhpcy51bml0cyA9IG1hdGNoID8gbWF0Y2hb
Ml0gOiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGV4dCwg
dmFsdWUpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgcGFyc2VWYWx1ZSh0ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9eKC0/W1xkLl0rKShbXlxzXGRdezAsNH0pKD86XHMq
Oz8pJC8uZXhlYyh0ZXh0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfa2V5d29y
ZENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgbGV0IHNlbGVjdGVkS2V5d29yZElzVW5pdCA9IHRo
aXMudmFsdWVJc1N1cHBvcnRlZFVuaXQodGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUp
OworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSAmJiBzZWxlY3RlZEtl
eXdvcmRJc1VuaXQpCisgICAgICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52
YWx1ZSA9IG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuX2hhc1VuaXRzKQorICAgICAgICAgICAg
dGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1l
bnQudmFsdWU7CisKKyAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gc2VsZWN0
ZWRLZXl3b3JkSXNVbml0OworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIsIHNlbGVjdGVkS2V5d29yZElzVW5pdCk7Cisg
ICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX3ZhbHVlTnVtYmVy
SW5wdXRLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJJbnB1
dElzRWRpdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24gYWRq
dXN0VmFsdWUoZGVsdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBuZXdWYWx1ZTsKKyAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWU7CisgICAgICAgICAgICBpZiAoIXZhbHVl
ICYmIGlzTmFOKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlclZhbHVl
ID0gdGhpcy5wbGFjZWhvbGRlciAmJiAhaXNOYU4odGhpcy5wbGFjZWhvbGRlcikgPyBwYXJzZUZs
b2F0KHRoaXMucGxhY2Vob2xkZXIpIDogMDsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHBs
YWNlaG9sZGVyVmFsdWUgKyBkZWx0YTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG5ld1ZhbHVlID0gdmFsdWUgKyBkZWx0YTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9h
bGxvd05lZ2F0aXZlVmFsdWVzICYmIG5ld1ZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IDA7CisKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSBNYXRoLnJvdW5kKG5ld1ZhbHVl
ICogMTAwKSAvIDEwMDsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAg
ICAgIH0KKworICAgICAgICBsZXQgc2hpZnQgPSAxOworICAgICAgICBpZiAoZXZlbnQuY3RybEtl
eSkKKyAgICAgICAgICAgIHNoaWZ0IC89IDEwOworICAgICAgICBlbHNlIGlmIChldmVudC5zaGlm
dEtleSkKKyAgICAgICAgICAgIHNoaWZ0ICo9IDEwOworCisgICAgICAgIGxldCBrZXkgPSBldmVu
dC5rZXlJZGVudGlmaWVyOworICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoIlBhZ2UiKSkKKyAg
ICAgICAgICAgIHNoaWZ0ICo9IDEwOworCisgICAgICAgIGlmIChrZXkgPT09ICJVcCIgfHwga2V5
ID09PSAiUGFnZVVwIikgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgICAgIGFkanVzdFZhbHVlLmNhbGwodGhpcywgc2hpZnQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleSA9PT0gIkRvd24iIHx8IGtleSA9PT0g
IlBhZ2VEb3duIikgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIGFkanVzdFZhbHVlLmNhbGwodGhpcywgLXNoaWZ0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQor
CisgICAgX251bWJlcklucHV0Q2hhbmdlZCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX251
bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF9rZXl3b3JkU2VsZWN0TW91c2VEb3du
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgIHRo
aXMuX2FkZEFkdmFuY2VkVW5pdHMoKTsKKyAgICAgICAgZWxzZSBpZiAoIXRoaXMuX3ZhbHVlSXNT
dXBwb3J0ZWRBZHZhbmNlZFVuaXQoKSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFkdmFuY2Vk
VW5pdHMoKTsKKyAgICB9CisKKyAgICBfY3JlYXRlVmFsdWVPcHRpb25zKHZhbHVlcykKKyAgICB7
CisgICAgICAgIGxldCBhZGRlZEVsZW1lbnRzID0gW107CisgICAgICAgIGZvciAobGV0IGtleSBp
biB2YWx1ZXMpIHsKKyAgICAgICAgICAgIGxldCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IGtleTsKKyAgICAgICAg
ICAgIG9wdGlvbi50ZXh0ID0gdmFsdWVzW2tleV07CisgICAgICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVt
ZW50cy5wdXNoKG9wdGlvbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkZWRFbGVt
ZW50czsKKyAgICB9CisKKyAgICBfY3JlYXRlVW5pdE9wdGlvbnModW5pdHMpCisgICAgeworICAg
ICAgICBsZXQgYWRkZWRFbGVtZW50cyA9IFtdOworICAgICAgICBmb3IgKGxldCB1bml0IG9mIHVu
aXRzKSB7CisgICAgICAgICAgICBsZXQgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9IHVuaXQ7CisgICAgICAgICAgICB0
aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgICAgICAg
ICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gYWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBfYWRkQWR2YW5jZWRVbml0cygpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAgICB0aGlzLl9hZHZhbmNlZFVu
aXRzRWxlbWVudHMgPSB0aGlzLl9jcmVhdGVVbml0T3B0aW9ucyh0aGlzLl9wb3NzaWJsZVVuaXRz
LmFkdmFuY2VkKTsKKyAgICB9CisKKyAgICBfcmVtb3ZlQWR2YW5jZWRVbml0cygpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZCh0
aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHNbMF0ucHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAg
Zm9yIChsZXQgZWxlbWVudCBvZiB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMpCisgICAgICAg
ICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMgPSBudWxsOworICAgIH0KKworICAg
IF9mb2N1c0NvbnRlbnRFbGVtZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50
RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIik7CisgICAgfQorCisgICAgX2JsdXJDb250
ZW50RWxlbWVudChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiZm9jdXNlZCIpOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZT
ZWxlY3RhYmxlRWxlbWVudHMoZGlzYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0RWxlbWVudC50YWJJbmRleCA9IGRpc2FibGVkID8gIi0xIiA6IG51bGw7CisgICAgICAg
IHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnRhYkluZGV4ID0gZGlzYWJsZWQgPyAiLTEi
IDogbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNv
bWJpbmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNmMxNjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIuanMKQEAgLTAsMCArMSwxODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyID0gY2xhc3Mg
VmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAor
eworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZSwgcHJvcGVydHlFZGl0b3JzKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9zdHlsZSA9IG51bGw7CisgICAgICAg
IHRoaXMuX3Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZTsKKyAgICAgICAgdGhpcy5fcHJvcGVy
dHlNaXNzaW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5RWRpdG9ycyA9IHByb3Bl
cnR5RWRpdG9ycyB8fCBbXTsKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3Bl
cnR5RWRpdG9ycykgeworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRo
aXMuX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAg
IGVkaXRvci5zdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl90ZXh0Q29udGFpbnNOYW1lUmVnRXhwID0gbmV3IFJlZ0V4cCgiKD86KD86Xnw7
KVxccyoiICsgdGhpcy5fcHJvcGVydHlOYW1lICsgIlxccyo6KSIpOworICAgICAgICB0aGlzLl9y
ZXBsYWNlbWVudFJlZ0V4cCA9IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIHRoaXMuX3By
b3BlcnR5TmFtZSArICIpKC4rPyg/Ojt8JCkpIik7CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhw
ID0gLyhbXlxzXStcKC4rXCl8W15cc10rKSg/Ojs/KS9nOworICAgIH0KKworICAgIGdldCBzdHls
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0
IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAg
ICAgIGxldCBvbmVFZGl0b3JIYXNWYWx1ZSA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBlZGl0
b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBsZXQgZWRpdG9yVmFs
dWUgPSBlZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmIChlZGl0b3JWYWx1
ZSAmJiBlZGl0b3JWYWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgb25lRWRpdG9ySGFzVmFs
dWUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoZWRpdG9yLm9wdGlvbmFsUHJvcGVydHkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IubWFz
dGVyUHJvcGVydHkgJiYgZWRpdG9yLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKCkpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9tYXJrRWRpdG9ycyhlZGl0b3IsIHRydWUpOworICAgICAgICAgICAg
ICAgIHJldHVybiBlZGl0b3JWYWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGVkaXRvciAhPT0gdGhpcy5fcHJvcGVydHlFZGl0b3JzWzBdKQorICAgICAgICAgICAgICAgIHZh
bHVlICs9ICIgIjsKKworICAgICAgICAgICAgdmFsdWUgKz0gZWRpdG9yVmFsdWUgfHwgKGVkaXRv
ci5jb2xvclByb3BlcnR5ID8gInRyYW5zcGFyZW50IiA6IDApOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fbWFya0VkaXRvcnMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCAmJiBv
bmVFZGl0b3JIYXNWYWx1ZSA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBtb2RpZnlQcm9w
ZXJ0eVRleHQodGV4dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJpbW1lZFRleHQgPSB0
ZXh0LnRyaW1SaWdodCgpOworICAgICAgICBpZiAodGhpcy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4
cC50ZXN0KHRleHQpKQorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh0aGlzLl9yZXBs
YWNlbWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDog
IiQxIik7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICAgICAgICBp
ZiAodHJpbW1lZFRleHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRo
KCI7IikpCisgICAgICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAgIHRleHQg
Kz0gdGhpcy5fcHJvcGVydHlOYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7Cisg
ICAgICAgIGlmIChzdHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CisgICAg
ICAgIGVsc2UgaWYgKHRoaXMuX2lnbm9yZU5leHRVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMu
X2lnbm9yZU5leHRVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnBy
b3BlcnR5Rm9yTmFtZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAgICAgICBsZXQgcHJv
cGVydHlNaXNzaW5nID0gIXByb3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nICYm
IHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0
eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVy
dHlOYW1lKTsKKworICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3Bl
cnR5TWlzc2luZyk7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IHByb3BlcnR5TWlz
c2luZzsKKyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9tVGV4dChzdHlsZVRleHQsIHByb3Bl
cnR5TWlzc2luZykKKyAgICB7CisgICAgICAgIGlmIChzdHlsZVRleHQgPT09IHRoaXMuc3ludGhl
c2l6ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0
b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKQorICAgICAgICAgICAgZWRpdG9yW1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSBm
YWxzZTsKKworICAgICAgICBmdW5jdGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKSB7
CisgICAgICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUo
dmFsdWUpIHx8IGVkaXRvcltXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVy
LkVkaXRvclVwZGF0ZWRTeW1ib2xdKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgJiYgZWRpdG9y
LmRpc2FibGVkKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGxldCB1cGRhdGVkVmFsdWVzID0gZWRpdG9yLmdldFZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8
ICIiLCBwcm9wZXJ0eU1pc3NpbmcpOworICAgICAgICAgICAgICAgIGVkaXRvci51cGRhdGVFZGl0
b3JWYWx1ZXModXBkYXRlZFZhbHVlcyk7CisgICAgICAgICAgICAgICAgZWRpdG9yW1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSB0
cnVlOworCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF0Y2hlcyA9
IHN0eWxlVGV4dC5tYXRjaCh0aGlzLl92YWx1ZVJlZ0V4cCk7CisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdGhpcy5fcHJvcGVydHlFZGl0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
dXBkYXRlQ29tcGF0aWJsZUVkaXRvci5jYWxsKHRoaXMsIG1hdGNoZXMgJiYgbWF0Y2hlc1tpXSk7
CisgICAgfQorCisgICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHJlc2V0RWRpdG9yVmFsdWVz
KHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOwor
ICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiKTsKKyAgICB9CisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfbWFya0VkaXRvcnMoaWdub3JlZEVkaXRvciwgZGlzYWJs
ZWQpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgPSBkaXNhYmxl
ZCB8fCBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRp
dG9ycykgeworICAgICAgICAgICAgaWYgKGlnbm9yZWRFZGl0b3IgJiYgZWRpdG9yID09PSBpZ25v
cmVkRWRpdG9yKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlZGl0
b3IuZGlzYWJsZWQgPSB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBfaGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNoYW5nZWQoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIGxldCB2YWx1ZSA9
IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAg
ICAgICAgdGhpcy5fc3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0
eWxlLnRleHQsIHZhbHVlKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3NpbmcgPSAhdmFs
dWU7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICB9Cit9
OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0
ZWRTeW1ib2wgPSBTeW1ib2woInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb21iaW5lci1lZGl0b3It
dXBkYXRlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzg2MzNlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHdp
ZHRoOiAxMDAlOworICAgIG1pbi1oZWlnaHQ6IDIycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFy
Z2luOiA0cHg7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0
eS1yZWZlcmVuY2UtaW5mb3sKKyAgICBjdXJzb3I6IGhlbHA7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRs
ZSA+IDpub3QoLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKSB7CisgICAgLXdlYmtpdC1maWx0ZXI6
IG9wYWNpdHkoMC43KQorfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBmbGV4OiAxOworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7Cisg
ICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3BhY2l0eTogMC40OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHNlbGVjdCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luOiAxcHggMDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1dCB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFw
eCk7CisgICAgbWFyZ2luOiAwOworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgaW5wdXQgeworICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRh
bnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmxheW91dC1yZXZlcnNl
ZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgeworICAgIG9yZGVyOiAyOworICAgIHRl
eHQtYWxpZ246IGxlZnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNw
ZWNpYWwtcHJvcGVydHktcGxhY2Vob2xkZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgp
OworICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIHRleHQtaW5kZW50OiA3cHg7CisgICAgYm9y
ZGVyLXJhZGl1czogNHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAxMDAlLCAxMDAl
KTsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCA1MCUpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICB6
LWluZGV4OiAxOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3ZlciB7Cisg
ICAgd2lkdGg6IDE5MHB4OworICAgIG1hcmdpbjogMCA1cHggM3B4OworICAgIHBhZGRpbmc6IDA7
Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1wb3BvdmVyID4gaDMgeworICAgIG1h
cmdpbjogNnB4IDNweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OTc4MDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzCkBAIC0wLDAgKzEsNTE0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0
cnVjdG9yKHByb3BlcnR5TmFtZXMsIGxhYmVsLCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0
cywgY2xhc3NOYW1lLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisK
KyAgICAgICAgdGhpcy5fcHJvcGVydHlJbmZvTGlzdCA9IFtdOworICAgICAgICB0aGlzLl9zdHls
ZSA9IG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFsdWVzKHZhbHVlcykK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2YWx1ZXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBsZXQgY2Fub25pY2FsaXplZFZhbHVlcyA9IHt9OworICAgICAg
ICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQorICAgICAgICAgICAgICAgIGNhbm9uaWNh
bGl6ZWRWYWx1ZXNbdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccy9nLCAiLSIpXSA9IHZh
bHVlOworCisgICAgICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplZFZhbHVlczsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzID0gbnVsbDsKKyAgICAgICAgaWYgKHBv
c3NpYmxlVmFsdWVzKSB7CisgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcyA9IHt9Owor
ICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9zc2libGVWYWx1ZXMpKQorICAgICAgICAg
ICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gY2Fub25pY2FsaXplVmFsdWVzKHBv
c3NpYmxlVmFsdWVzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMu
X3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gY2Fub25pY2FsaXplVmFsdWVzKHBvc3NpYmxlVmFsdWVz
LmJhc2ljKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCA9
IGNhbm9uaWNhbGl6ZVZhbHVlcyhwb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCk7CisgICAgICAgICAg
ICB9IAorICAgICAgICB9CisgICAgICAgIHRoaXMuX3Bvc3NpYmxlVW5pdHMgPSBudWxsOworICAg
ICAgICBpZiAocG9zc2libGVVbml0cykgeworICAgICAgICAgICAgdGhpcy5fcG9zc2libGVVbml0
cyA9IHt9OworICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9zc2libGVVbml0cykpCisg
ICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVVbml0cy5iYXNpYyA9IHBvc3NpYmxlVW5pdHM7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9
IHBvc3NpYmxlVW5pdHM7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciIsIGNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibGF5b3V0LXJldmVyc2VkIiwg
bGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIGlmIChsYWJlbCAmJiBsYWJlbC5sZW5ndGgpIHsK
KyAgICAgICAgICAgIGxldCB0aXRsZUNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICAgICAgdGl0bGVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFs
LXN0eWxlLXByb3BlcnR5LXRpdGxlIik7CisKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRoaXMuX3Rp
dGxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOwor
ICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3Zl
ciIsIHRoaXMuX3RpdGxlRWxlbWVudE1vdXNlT3Zlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IHRoaXMuX3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX3Rp
dGxlRWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdGl0bGVFbGVtZW50Q2xpY2su
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aXRsZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlz
Ll90aXRsZUVsZW1lbnQpOworCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KHRpdGxlQ29udGFpbmVyKTsKKworICAgICAgICAgICAgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQ
cmVwYXJlRm9yQ2xpY2sgPSB0aGlzLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2suYmluZCh0
aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNs
YXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIiKTsKKwor
ICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9w
ZXJ0eS1wbGFjZWhvbGRlciIpOworICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhv
bGRlckVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRFbGVtZW50KTsK
KworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzID0ge307CisgICAgICAgIHRoaXMuX2xhc3RW
YWx1ZSA9IG51bGw7CisKKyAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eU5hbWVzID09PSAic3Ry
aW5nIikKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMgPSBbcHJvcGVydHlOYW1lc107CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVQcm9wZXJ0aWVzID0gdHJ1
ZTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibXVsdGlwbGUiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IG5hbWUgb2YgcHJvcGVydHlOYW1lcykgewor
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKG5hbWUpOworICAgICAgICAg
ICAgdGhpcy5fcHJvcGVydHlJbmZvTGlzdC5wdXNoKHsKKyAgICAgICAgICAgICAgICBuYW1lLAor
ICAgICAgICAgICAgICAgIHRleHRDb250YWluc05hbWVSZWdFeHA6IG5ldyBSZWdFeHAoIig/Oig/
Ol58OylcXHMqIiArIG5hbWUgKyAiXFxzKjopIiksCisgICAgICAgICAgICAgICAgcmVwbGFjZW1l
bnRSZWdFeHA6IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIG5hbWUgKyAiKSguKz8oPzo7
fCQpKSIpCisgICAgICAgICAgICB9KQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvcGVy
dHlSZWZlcmVuY2VOYW1lID0gcHJvcGVydHlOYW1lc1swXTsKKyAgICAgICAgdGhpcy5fcmVwcmVz
ZW50ZWRQcm9wZXJ0eSA9IG51bGw7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQg
ZWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisK
KyAgICBnZXQgc3R5bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlOworICAg
IH0KKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzcy4KKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4KKyAgICB9CisKKyAgICBnZXQgdW5pdHMoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0
IHVuaXRzKHVuaXQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4K
KyAgICB9CisKKyAgICBnZXQgcGxhY2Vob2xkZXIoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCisg
ICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4KKyAgICB9CisKKyAgICBn
ZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzcy4KKyAgICB9CisKKyAgICBzZXQgc3VwcHJlc3NTdHlsZVRleHRVcGRhdGUoZmxhZykK
KyAgICB7CisgICAgICAgIHRoaXMuX3N1cHByZXNzU3R5bGVUZXh0VXBkYXRlID0gZmxhZzsKKyAg
ICB9CisKKyAgICBzZXQgbWFzdGVyUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMu
X21hc3RlclByb3BlcnR5ID0gZmxhZzsKKyAgICB9CisKKyAgICBnZXQgbWFzdGVyUHJvcGVydHko
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hc3RlclByb3BlcnR5OworICAgIH0KKwor
ICAgIHNldCBvcHRpb25hbFByb3BlcnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9vcHRp
b25hbFByb3BlcnR5ID0gZmxhZzsKKyAgICB9CisKKyAgICBnZXQgb3B0aW9uYWxQcm9wZXJ0eSgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uYWxQcm9wZXJ0eTsKKyAgICB9CisK
KyAgICBzZXQgY29sb3JQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29sb3JQ
cm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IGNvbG9yUHJvcGVydHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yUHJvcGVydHk7CisgICAgfQorCisgICAgZ2V0IHBy
b3BlcnR5UmVmZXJlbmNlTmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVy
dHlSZWZlcmVuY2VOYW1lOworICAgIH0KKworICAgIHNldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUo
bmFtZSkKKyAgICB7CisgICAgICAgIGlmICghbmFtZSB8fCAhbmFtZS5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VOYW1lID0gbmFt
ZTsKKyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMu
X2Rpc2FibGVkID0gZmxhZzsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJkaXNhYmxlZCIsIHRoaXMuX2Rpc2FibGVkKTsKKyAgICAgICAgdGhpcy5fdG9nZ2xlVGFiYmlu
Z09mU2VsZWN0YWJsZUVsZW1lbnRzKHRoaXMuX2Rpc2FibGVkKTsKKyAgICB9CisKKyAgICBnZXQg
ZGlzYWJsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOworICAgIH0K
KworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAgICAgIGlmIChzdHlsZSkKKyAgICAgICAg
ICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2lnbm9yZU5l
eHRVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fc3R5
bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9
IHt9OworICAgICAgICBsZXQgcHJvcGVydHlWYWx1ZXNDb25mbGljdCA9IGZhbHNlOworICAgICAg
ICBsZXQgcHJvcGVydHlNaXNzaW5nID0gZmFsc2U7CisgICAgICAgIGZvciAobGV0IHByb3BlcnR5
SW5mbyBvZiB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0KSB7CisgICAgICAgICAgICBsZXQgcHJvcGVy
dHkgPSB0aGlzLl9zdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZvLm5hbWUsIHRydWUp
OworICAgICAgICAgICAgcHJvcGVydHlNaXNzaW5nID0gIXByb3BlcnR5OworICAgICAgICAgICAg
aWYgKHByb3BlcnR5TWlzc2luZyAmJiB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzKQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5ID0gdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnBy
b3BlcnR5Rm9yTmFtZShwcm9wZXJ0eUluZm8ubmFtZSk7CisKKyAgICAgICAgICAgIGlmICghcHJv
cGVydHkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghcHJv
cGVydHlNaXNzaW5nICYmIHByb3BlcnR5LmFub255bW91cykKKyAgICAgICAgICAgICAgICB0aGlz
Ll9yZXByZXNlbnRlZFByb3BlcnR5ID0gcHJvcGVydHk7CisKKyAgICAgICAgICAgIGxldCBuZXdW
YWx1ZXMgPSB0aGlzLmdldFZhbHVlc0Zyb21UZXh0KHByb3BlcnR5LnZhbHVlLCBwcm9wZXJ0eU1p
c3NpbmcpOworICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIg
JiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAhPT0gbmV3VmFsdWVzLnBsYWNlaG9s
ZGVyKQorICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWVzQ29uZmxpY3QgPSB0cnVlOworCisg
ICAgICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIpCisgICAgICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9IG5ld1ZhbHVlczsKKworICAgICAgICAgICAg
aWYgKHByb3BlcnR5VmFsdWVzQ29uZmxpY3QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVkVmFsdWVzLmNvbmZsaWN0aW5nVmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQudGV4dENvbnRlbnQgPSAiKCIgKyBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIm11bHRpcGxlIikgKyAiKSI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5faGFz
TXVsdGlwbGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxh
Y2Vob2xkZXJFbGVtZW50LmhpZGRlbiA9ICFwcm9wZXJ0eVZhbHVlc0NvbmZsaWN0OworCisgICAg
ICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3VwZGF0ZWRWYWx1ZXMpOworICAgIH0K
KworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKQorICAgIHsKKyAgICAgICAg
dGhpcy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSB1
cGRhdGVkVmFsdWVzLnVuaXRzOworICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdXBkYXRlZFZh
bHVlcy5wbGFjZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aGlzLnN5bnRo
ZXNpemVkVmFsdWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXNldEVkaXRvclZhbHVlcyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2lnbm9yZU5l
eHRVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKSB7
CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3NwZWNp
YWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB1cGRhdGVkVmFsdWVzID0gdGhpcy5n
ZXRWYWx1ZXNGcm9tVGV4dCh2YWx1ZSk7CisgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVz
KHVwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCB0cmltbWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7
CisgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QpIHsK
KyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50ZXh0Q29udGFpbnNOYW1lUmVnRXhwLnRlc3QodGV4
dCkpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwcm9wZXJ0eS5yZXBsYWNl
bWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQx
Iik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCkgeworICAgICAgICAgICAg
ICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0aCAmJiAhdHJpbW1lZFRleHQuZW5k
c1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAg
ICAgICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5hbWUgKyAiOiAiICsgdmFsdWUgKyAiOyI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAg
Z2V0VmFsdWVzRnJvbVRleHQodGV4dCwgcHJvcGVydHlNaXNzaW5nKQorICAgIHsKKyAgICAgICAg
bGV0IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVlKHRleHQpOworICAgICAgICBsZXQgcGxhY2Vob2xk
ZXIgPSBtYXRjaCA/IG1hdGNoWzFdIDogdGV4dDsKKyAgICAgICAgbGV0IHVuaXRzID0gbWF0Y2gg
PyBtYXRjaFsyXSA6IG51bGw7CisgICAgICAgIGxldCB2YWx1ZSA9IHBsYWNlaG9sZGVyOworICAg
ICAgICBpZiAocHJvcGVydHlNaXNzaW5nKQorICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVl
SXNTdXBwb3J0ZWRLZXl3b3JkKHRleHQpID8gdGV4dCA6IG51bGw7CisKKyAgICAgICAgcmV0dXJu
IHt2YWx1ZSwgdW5pdHMsIHBsYWNlaG9sZGVyLCBwcm9wZXJ0eU1pc3Npbmd9OworICAgIH0KKwor
ICAgIGdldCBwcm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Vw
ZGF0ZWRWYWx1ZXMgJiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1pc3Npbmc7CisgICAg
fQorCisgICAgdmFsdWVJc0NvbXBhdGlibGUodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZh
bHVlIHx8ICF2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodmFsdWUpIHx8ICEhdGhpcy5w
YXJzZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICB2YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh2
YWx1ZSkgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVmFsdWVzKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhbHVlID0gdmFsdWUgfHwgdGhpcy52YWx1ZTsKKyAg
ICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljKS5pbmNsdWRl
cyh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhp
cy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2YWx1ZSk7CisgICAgfQorCisgICAg
dmFsdWVJc1N1cHBvcnRlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcG9z
c2libGVVbml0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1bml0ID0g
dW5pdCB8fCB0aGlzLnVuaXRzOworICAgICAgICBpZiAodGhpcy5fcG9zc2libGVVbml0cy5iYXNp
Yy5pbmNsdWRlcyh1bml0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJl
dHVybiB0aGlzLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRVbml0KHVuaXQpOworICAgIH0KKwor
ICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGNvbnRlbnRFbGVtZW50KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50RWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQgc3BlY2lh
bFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQ7CisgICAgfQorCisgICAgcGFyc2VW
YWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9eKFteO10rKVxzKjs/JC8uZXhlYyh0
ZXh0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdmFsdWVJc1N1cHBvcnRlZEFk
dmFuY2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJs
ZVZhbHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZh
bmNlZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7CisgICAgfQorCisgICAgX3ZhbHVl
SXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQu
aW5jbHVkZXModW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9CisKKyAgICBfY2Fub25pY2FsaXpl
ZEtleXdvcmRGb3JLZXkodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF0aGlz
Ll9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJl
dHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1t2YWx1ZV0gfHwgKHRoaXMuX3Bvc3NpYmxl
VmFsdWVzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkW3ZhbHVlXSkg
fHwgbnVsbDsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29yZChrZXl3b3JkKQorICAgIHsKKyAg
ICAgICAgaWYgKCFrZXl3b3JkIHx8ICFrZXl3b3JkLmxlbmd0aCB8fCAhdGhpcy5fcG9zc2libGVW
YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBmb3IgKGxldCBiYXNp
Y0tleSBpbiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykgeworICAgICAgICAgICAgaWYgKHRo
aXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljW2Jhc2ljS2V5XSA9PT0ga2V5d29yZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYmFzaWNLZXk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMu
X3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAg
ICAgICAgZm9yIChsZXQgYWR2YW5jZWRLZXkgaW4gdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5j
ZWQpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZFthZHZh
bmNlZEtleV0gPT09IGtleXdvcmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VkS2V5
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgX3ZhbHVl
RGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc3ludGhlc2l6ZWRW
YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9sYXN0VmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlICYmICF0aGlzLl9zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSkgeworICAgICAgICAgICAgbGV0IG5ld1RleHQgPSB0aGlzLl9z
dHlsZS50ZXh0OworICAgICAgICAgICAgbmV3VGV4dCA9IHRoaXMuX3JlcGxhY2VTaG9ydGhhbmRQ
cm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMobmV3VGV4dCk7CisgICAgICAgICAgICBuZXdU
ZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQobmV3VGV4dCwgdmFsdWUpOworICAgICAgICAg
ICAgdGhpcy5fc3R5bGUudGV4dCA9IG5ld1RleHQ7CisgICAgICAgICAgICBpZiAoIW5ld1RleHQu
bGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLnVwZGF0ZShudWxsLCBudWxsLCB0
aGlzLl9zdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2xhc3RWYWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzLnByb3Bl
cnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IHRy
dWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRk
ZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgX3JlcGxhY2VTaG9ydGhhbmRQcm9w
ZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXModGV4dCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fcmVwcmVzZW50ZWRQcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybiB0ZXh0OworCisgICAg
ICAgIGxldCBzaG9ydGhhbmQgPSB0aGlzLl9yZXByZXNlbnRlZFByb3BlcnR5LnJlbGF0ZWRTaG9y
dGhhbmRQcm9wZXJ0eTsKKyAgICAgICAgaWYgKCFzaG9ydGhhbmQpCisgICAgICAgICAgICByZXR1
cm4gdGV4dDsKKworICAgICAgICBsZXQgbG9uZ2hhbmRUZXh0ID0gIiI7CisgICAgICAgIGZvciAo
bGV0IGxvbmdoYW5kUHJvcGVydHkgb2Ygc2hvcnRoYW5kLnJlbGF0ZWRMb25naGFuZFByb3BlcnRp
ZXMpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZFByb3BlcnR5LmFub255bW91cykKKyAgICAg
ICAgICAgICAgICBsb25naGFuZFRleHQgKz0gbG9uZ2hhbmRQcm9wZXJ0eS5zeW50aGVzaXplZFRl
eHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvbmdoYW5kVGV4dCA/IHRleHQucmVwbGFj
ZShzaG9ydGhhbmQudGV4dCwgbG9uZ2hhbmRUZXh0KSA6IHRleHQ7CisgICAgfQorCisgICAgX3Rp
dGxlRWxlbWVudFByZXBhcmVGb3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Rp
dGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2
ZW50LnR5cGUgPT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRLZXkpOworICAgIH0KKworICAgIF90
aXRsZUVsZW1lbnRNb3VzZU92ZXIoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVudC5h
bHRLZXkpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZv
ckNsaWNrKTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50TW91c2VPdXQoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInByb3BlcnR5LXJlZmVy
ZW5jZS1pbmZvIik7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgICAgIGRv
Y3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fYm91bmRUaXRsZUVsZW1l
bnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRDbGljayhldmVu
dCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICB0aGlzLl9z
aG93UHJvcGVydHlJbmZvUG9wb3ZlcigpOworICAgIH0KKworICAgIF9oYXNNdWx0aXBsZUNvbmZs
aWN0aW5nVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVBy
b3BlcnRpZXMgJiYgIXRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRk
ZW47CisgICAgfQorCisgICAgX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7CisgICAg
ICAgIGxldCBwcm9wZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIp
OworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIiKTsKKworICAgICAgICBsZXQgcHJvcGVydHlJbmZvVGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvVGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVy
dHlJbmZvRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMu
X3Byb3BlcnR5UmVmZXJlbmNlTmFtZV0pKTsKKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5z
cGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Qb3BvdmVyKHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9F
bGVtZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3Bl
Y3Rvci5SZWN0RWRnZS5NSU5fWV0pOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxl
Y3RhYmxlRWxlbWVudHMoZGlzYWJsZWQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzcy4KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5FdmVudCA9IHsKKyAgICBWYWx1ZURpZENoYW5nZTogInZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItdmFsdWUtY2hhbmdlZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5r
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hN2RlYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzCkBAIC0w
LDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluayB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1pbi13aWR0aDogMzJweDsKKyAg
ICBtYXJnaW4tbGVmdDogMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rLmRpc2FibGVkIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwgeworICAgIGhlaWdodDogMTNweDsKKyAg
ICBtYXJnaW46IDAgYXV0byAycHg7CisgICAgcGFkZGluZzogMCA1MHB4OworICAgIGJvcmRlci10
b3Atd2lkdGg6IDA7CisgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisgICAgYm9yZGVyLWJv
dHRvbS13aWR0aDogMDsKKyAgICBib3JkZXItbGVmdC13aWR0aDogMXB4OworICAgIGJvcmRlci1j
b2xvcjogaHNsKDAsIDAlLCA1MCUpOworICAgIGJvcmRlci1zdHlsZTogZGFzaGVkOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCB7CisgICAg
Ym9yZGVyLWNvbG9yOiBibGFjazsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlkOworfQorCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1ib3JkZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC13
ZWJraXQtY2FsYyg1MCUgLSAwLjVweCk7CisgICAgd2lkdGg6IDQ4cHg7CisgICAgYm9yZGVyLXRv
cDogMXB4IGRhc2hlZCBoc2woMCwgMCUsIDUwJSk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmsubGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rLWJvcmRlci5sZWZ0LAorLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5r
LWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb246aG92
ZXIgKyAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCAgewor
ICAgIHdpZHRoOiA0OXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9y
ZGVyLmxlZnQgeworICAgIHdpZHRoOiA1MnB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstYm9yZGVyLnJpZ2h0IHsKKyAgICB3aWR0aDogNTFweDsKK30KKworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGhzbCgwLCAw
LCAwKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLmxlZnQgeworICAgIGxlZnQ6IDFweDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLnJpZ2h0IHsKKyAgICByaWdodDogMXB4OworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLmxlZnQgeworICAgIGxlZnQ6
IDA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlu
a2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQgewor
ICAgIHJpZ2h0OiAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5v
dCgubGluay1hbGwpID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIg
eworICAgIHdpZHRoOiAxMHB4OworICAgIHRvcDogLXdlYmtpdC1jYWxjKDUwJSAtIDFweCk7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkubGlu
a2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIgeworICAgIHdp
ZHRoOiAxMnB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uIHsKKyAgICB3aWR0aDogMTBweDsK
KyAgICBoZWlnaHQ6IDEwcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQt
aWNvbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGJhY2tncm91bmQtY29sb3I6IGhz
bCgwLCAxMDAlLCAxMDAlKTsKKyAgICB6LWluZGV4OiAxOworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1p
Y29uID4gLnVubGlua2VkLWljb24gc3ZnIC5maWxsZWQgeworICAgIGZpbGw6IGhzbCgwLCAwJSwg
NTAlKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHN2ZyAuc3Ry
b2tlZCB7CisgICAgc3Ryb2tlOiBoc2woMCwgMCUsIDUwJSk7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rLWljb24geworICAgIG1hcmdpbjogNXB4IDAgMCAxMXB4OworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uIHsKKyAgICBtYXJnaW4tdG9wOiAxcHg7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOGZiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yTGluay5qcwpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayA9IGNsYXNzIFZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3JMaW5rIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0
cnVjdG9yKGxpbmtlZFByb3BlcnRpZXMsIGNsYXNzTmFtZSwgbGlua3NUb0hpZGVXaGVuTGlua2Vk
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9saW5rZWRQcm9wZXJ0
aWVzID0gbGlua2VkUHJvcGVydGllcyB8fCBbXTsKKyAgICAgICAgdGhpcy5fbGlua3NUb0hpZGVX
aGVuTGlua2VkID0gbGlua3NUb0hpZGVXaGVuTGlua2VkIHx8IFtdOworICAgICAgICB0aGlzLl9s
YXN0UHJvcGVydHlFZGl0ZWQgPSBudWxsOworCisgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9m
IHRoaXMuX2xpbmtlZFByb3BlcnRpZXMpCisgICAgICAgICAgICBwcm9wZXJ0eS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVl
RGlkQ2hhbmdlLCB0aGlzLl9saW5rZWRQcm9wZXJ0eVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluayIsIGNsYXNzTmFtZSB8fCAiIik7CisKKyAgICAgICAgbGV0IGxlZnRMaW5lRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsZWZ0TGluZUVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJv
cmRlciIsICJsZWZ0Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGVmdExp
bmVFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9pY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiIpOworICAgICAgICB0aGlz
Ll9pY29uRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gbGlu
ayBwcm9wZXJ0eSB2YWx1ZXMiKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faWNvbk1vdXNlb3Zlci5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlz
Ll9pY29uTW91c2VvdXQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faWNvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisK
KyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eVVu
bGlua2VkLnN2ZyIsICJ1bmxpbmtlZC1pY29uIiwgbnVsbCwgZnVuY3Rpb24od3JhcHBlcikgewor
ICAgICAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAg
ICAgICAgICB0aGlzLl91bmxpbmtlZEljb24gPSB3cmFwcGVyOworICAgICAgICB9LmJpbmQodGhp
cykpOworCisgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL1Zpc3VhbFN0eWxlUHJv
cGVydHlMaW5rZWQuc3ZnIiwgImxpbmtlZC1pY29uIiwgbnVsbCwgZnVuY3Rpb24od3JhcHBlcikg
eworICAgICAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQod3JhcHBlcik7Cisg
ICAgICAgICAgICB0aGlzLl9saW5rZWRJY29uID0gd3JhcHBlcjsKKyAgICAgICAgICAgIHRoaXMu
X2xpbmtlZEljb24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKworICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25FbGVtZW50KTsKKworICAg
ICAgICBsZXQgcmlnaHRMaW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICByaWdodExpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIiLCAicmlnaHQiKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZChyaWdodExpbmVFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9saW5r
ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIHNldCBkaXNhYmxlZChmbGFnKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fZGlzYWJsZWQgPSBmbGFnOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoImRpc2FibGVkIiwgdGhpcy5fZGlzYWJsZWQpOworICAgIH0KKworICAgIC8v
IFByaXZhdGUKKworICAgIF9saW5rZWRQcm9wZXJ0eVZhbHVlQ2hhbmdlZChldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghZXZlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0
IHByb3BlcnR5ID0gZXZlbnQudGFyZ2V0OworICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2xhc3RQcm9wZXJ0eUVkaXRlZCA9IHByb3Bl
cnR5OworICAgICAgICBpZiAoIXRoaXMuX2xpbmtlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl91cGRhdGVMaW5rZWRFZGl0b3JzKHByb3BlcnR5KTsKKyAgICB9CisKKyAg
ICBfdXBkYXRlTGlua2VkRWRpdG9ycyhwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGxldCBzdHls
ZSA9IHByb3BlcnR5LnN0eWxlOworICAgICAgICBsZXQgdGV4dCA9IHN0eWxlLnRleHQ7CisgICAg
ICAgIGxldCB2YWx1ZSA9IHByb3BlcnR5LnN5bnRoZXNpemVkVmFsdWUgfHwgbnVsbDsKKworICAg
ICAgICBmb3IgKGxldCBsaW5rZWRQcm9wZXJ0eSBvZiB0aGlzLl9saW5rZWRQcm9wZXJ0aWVzKQor
ICAgICAgICAgICAgdGV4dCA9IGxpbmtlZFByb3BlcnR5LnVwZGF0ZVZhbHVlRnJvbVRleHQodGV4
dCwgdmFsdWUpOworCisgICAgICAgIHN0eWxlLnRleHQgPSB0ZXh0OworICAgIH0KKworICAgIF9p
Y29uTW91c2VvdmVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xpbmtlZEljb24uaGlkZGVuID0g
dGhpcy5fbGlua2VkOworICAgICAgICB0aGlzLl91bmxpbmtlZEljb24uaGlkZGVuID0gIXRoaXMu
X2xpbmtlZDsKKyAgICB9CisKKyAgICBfaWNvbk1vdXNlb3V0KCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2xpbmtlZEljb24uaGlkZGVuID0gIXRoaXMuX2xpbmtlZDsKKyAgICAgICAgdGhpcy5fdW5s
aW5rZWRJY29uLmhpZGRlbiA9IHRoaXMuX2xpbmtlZDsKKyAgICB9CisKKyAgICBfaWNvbkNsaWNr
ZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGlua2VkID0gIXRoaXMuX2xpbmtlZDsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJsaW5rZWQiLCB0aGlzLl9saW5rZWQp
OworICAgICAgICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9ICF0aGlzLl9saW5rZWQ7CisgICAg
ICAgIHRoaXMuX3VubGlua2VkSWNvbi5oaWRkZW4gPSB0aGlzLl9saW5rZWQ7CisKKyAgICAgICAg
dGhpcy5faWNvbkVsZW1lbnQudGl0bGUgPSB0aGlzLl9saW5rZWQgPyBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNsaWNrIHRvIHJlbW92ZSBsaW5rIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNs
aWNrIHRvIGxpbmsgcHJvcGVydHkgdmFsdWVzIik7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlTGlu
a2VkRWRpdG9ycyh0aGlzLl9sYXN0UHJvcGVydHlFZGl0ZWQgfHwgdGhpcy5fbGlua2VkUHJvcGVy
dGllc1swXSk7CisgICAgICAgIGZvciAobGV0IGxpbmtUb0hpZGUgb2YgdGhpcy5fbGlua3NUb0hp
ZGVXaGVuTGlua2VkKQorICAgICAgICAgICAgbGlua1RvSGlkZS5kaXNhYmxlZCA9IHRoaXMuX2xp
bmtlZDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1dC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1l
SW5wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBlNTNhOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1dCA9IGNsYXNz
IFZpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvcgoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRl
eHQsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywg
dGV4dCwgbnVsbCwgbnVsbCwgInByb3BlcnR5LW5hbWUtaW5wdXQiLCBsYXlvdXRSZXZlcnNlZCk7
CisKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lSW5wdXRFbGVt
ZW50LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbnRlciBhIG5hbWUuIik7
CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZUlucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgdGhpcy5faW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
Ll9wcm9wZXJ0eU5hbWVJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlz
Ll9pbnB1dEtleVVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWVJbnB1
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2hpZGVDb21wbGV0aW9ucy5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9wcm9wZXJ0eU5hbWVJbnB1dEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25D
b250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJv
bGxlcih0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIuRXZl
bnQuQ29tcGxldGlvblNlbGVjdGVkLCB0aGlzLl9jb21wbGV0aW9uQ2xpY2tlZCwgdGhpcyk7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZUlucHV0RWxlbWVudC52YWx1ZTsKKyAgICB9CisKKyAg
ICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgPT09
IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcHJvcGVy
dHlOYW1lSW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0IHN5bnRo
ZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgbnVsbDsK
KyAgICB9CisKKyAgICBnZXQgaGFzQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhhc0NvbXBsZXRpb25zOworICAgIH0KKworICAg
IHNldCBjb21wbGV0aW9ucyhjb21wbGV0aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbXBs
ZXRpb25Db250cm9sbGVyLmNvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgfQorCisgICAg
Ly8gUHJpdmF0ZQorCisgICAgX2NvbXBsZXRpb25DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEudGV4dDsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRD
aGFuZ2UoKTsKKyAgICB9CisKKyAgICBfaW5wdXRLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci52aXNpYmxlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxldCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTsKKyAgICAgICAg
bGV0IGVudGVyS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5FbnRl
ci5rZXlDb2RlOworICAgICAgICBsZXQgdGFiS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleS5UYWIua2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVudGVy
S2V5Q29kZSB8fCBrZXlDb2RlID09PSB0YWJLZXlDb2RlKSB7CisgICAgICAgICAgICB0aGlzLnZh
bHVlID0gdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuY3VycmVudENvbXBsZXRpb247CisgICAg
ICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVl
RGlkQ2hhbmdlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgZXNjYXBlS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2Nh
cGUua2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVzY2FwZUtleUNvZGUpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2hpZGVDb21wbGV0aW9ucygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgbGV0IGtleSA9IGV2ZW50LmtleUlkZW50aWZpZXI7CisgICAg
ICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250
cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25D
b250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIF9pbnB1dEtleVVwKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5oYXNDb21wbGV0
aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5f
dmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZSh0aGlz
LnZhbHVlKSkgeworICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJl
Y3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9wcm9wZXJ0eU5hbWVJbnB1dEVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkpOworICAgICAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5zaG93
KGJvdW5kcywgMik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGlkZUNvbXBsZXRpb25zKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICB9
CisKKyAgICBfdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKGRpc2FibGVkKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lSW5wdXRFbGVtZW50LnRhYkluZGV4ID0gZGlz
YWJsZWQgPyAiLTEiIDogbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNs
aWRlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jYzE3MjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5j
c3MKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgeworICAgIG1hcmdpbi1yaWdodDogM3B4OworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZl
LW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7
CisgICAgb3JkZXI6IDI7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51
bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyOm5vdCgubnVtYmVyLWlucHV0LWVkaXRhYmxlKSArIC5yZWxh
dGl2ZS1zbGlkZXIsCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5w
dXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIuZGlzYWJsZWQgPiAucmVsYXRpdmUtc2xpZGVy
IHsKKyAgICBvcGFjaXR5OiAwLjU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUt
bnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLm5v
LXZhbHVlcy5uby11bml0cyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xp
ZGVyID4gLnJlbGF0aXZlLXNsaWRlciB7CisgICAgd2lkdGg6IDQ3JTsKKyAgICBtYXJnaW4tcmln
aHQ6IDdweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVy
U2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMjQwMDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlciA9
IGNsYXNzIFZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveAoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5
TmFtZXMsIHRleHQsIHBvc3NpYmxlVmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBhbGxvd05lZ2F0aXZl
VmFsdWVzLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5TmFt
ZXMsIHRleHQsIHBvc3NpYmxlVmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBhbGxvd05lZ2F0aXZlVmFs
dWVzLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJyZWxhdGl2ZS1udW1iZXItc2xpZGVyIik7CisKKyAgICAgICAgdGhpcy5fc2xpZGVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX3Ns
aWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVsYXRpdmUtc2xpZGVyIik7CisgICAgICAgIHRo
aXMuX3NsaWRlckVsZW1lbnQudHlwZSA9ICJyYW5nZSI7CisgICAgICAgIHRoaXMuX3NsaWRlckVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9zbGlkZXJDaGFuZ2VkLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NsaWRlckVs
ZW1lbnQpOworCisgICAgICAgIHRoaXMuX3N0YXJ0aW5nVmFsdWUgPSBudWxsOworICAgICAgICB0
aGlzLl9zY2FsZSA9IDIwMDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNldCBzY2Fs
ZShzY2FsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjYWxlID0gc2NhbGUgfHwgMTsKKyAgICB9
CisKKyAgICB1cGRhdGVFZGl0b3JWYWx1ZXModXBkYXRlZFZhbHVlcykKKyAgICB7CisgICAgICAg
IHN1cGVyLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsKKyAgICAgICAgdGhpcy5f
cmVzZXRTbGlkZXIoKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcmVzZXRTbGlk
ZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1ZSA9IHBhcnNlRmxvYXQodGhp
cy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUpOworICAgICAgICBpZiAoaXNOYU4odGhp
cy5fc3RhcnRpbmdWYWx1ZSkpCisgICAgICAgICAgICB0aGlzLl9zdGFydGluZ1ZhbHVlID0gcGFy
c2VGbG9hdCh0aGlzLnBsYWNlaG9sZGVyKSB8fCAwOworCisgICAgICAgIGxldCBtaWRwb2ludCA9
IHRoaXMuX3NjYWxlIC8gMjsKKyAgICAgICAgaWYgKHRoaXMuX2FsbG93TmVnYXRpdmVWYWx1ZXMg
fHwgdGhpcy5fc3RhcnRpbmdWYWx1ZSA+IG1pZHBvaW50KSB7CisgICAgICAgICAgICB0aGlzLl9z
bGlkZXJFbGVtZW50Lm1pbiA9IC1taWRwb2ludDsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVs
ZW1lbnQubWF4ID0gbWlkcG9pbnQ7CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50LnZh
bHVlID0gMDsKKyAgICAgICAgICAgIHRoaXMuX29yaWdpbiA9IHRoaXMuX3N0YXJ0aW5nVmFsdWU7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50Lm1pbiA9
IDA7CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50Lm1heCA9IHRoaXMuX3NjYWxlOwor
ICAgICAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC52YWx1ZSA9IHRoaXMuX3N0YXJ0aW5nVmFs
dWU7CisgICAgICAgICAgICB0aGlzLl9vcmlnaW4gPSAwOworICAgICAgICB9CisgICAgfQorCisg
ICAgX3NsaWRlckNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX29y
aWdpbiArIE1hdGgucm91bmQocGFyc2VGbG9hdCh0aGlzLl9zbGlkZXJFbGVtZW50LnZhbHVlKSAq
IDEwMCkgLyAxMDA7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisg
ICAgX251bWJlcklucHV0Q2hhbmdlZCgpCisgICAgeworICAgICAgICBzdXBlci5fbnVtYmVySW5w
dXRDaGFuZ2VkKCk7CisgICAgICAgIHRoaXMuX3Jlc2V0U2xpZGVyKCk7CisgICAgfQorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlU2VsZWN0b3JTZWN0aW9uLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzE1ZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNl
Y3Rpb24uY3NzCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmRldGFpbHMtc2VjdGlv
bi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5oZWFkZXIgeworICAgIGRpc3BsYXk6
IGZsZXg7CisgICAgaGVpZ2h0OiAyMnB4OworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1z
dHlsZS1zZWxlY3Rvci1zZWN0aW9uOm5vdCguY29sbGFwc2VkKSA+IC5oZWFkZXIgeworICAgIGJv
cmRlci1ib3R0b206IDFweCBzb2xpZCBoc2woMCwgMCUsIDcwJSk7Cit9CisKK0BtZWRpYSAoLXdl
YmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CisgICAgLmRldGFpbHMtc2VjdGlvbi52
aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbjpub3QoLmNvbGxhcHNlZCkgPiAuaGVhZGVyIHsK
KyAgICAgICAgYm9yZGVyLXdpZHRoOiAwLjVweCAhaW1wb3J0YW50OworICAgIH0KK30KKworLmRl
dGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5oZWFkZXIgPiAu
Y3VycmVudC1zZWxlY3RvciB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDg1cHgpOworICAgIG1h
cmdpbi1sZWZ0OiAxMHB4OworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRleHQtb3ZlcmZsb3c6IGVs
bGlwc2lzOworfQorCisudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24uZGV0YWlscy1zZWN0
aW9uOm5vdCguY29sbGFwc2VkKSA+IC5oZWFkZXIgPiAuY3VycmVudC1zZWxlY3RvciB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0
b3Itc2VjdGlvbiA+IC5oZWFkZXIgPiAuY3VycmVudC1zZWxlY3RvciA+IC5pY29uIHsKKyAgICB3
aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogM3B4OworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxlY3Rv
ci1zZWN0aW9uID4gLmhlYWRlciA+IC5jdXJyZW50LXNlbGVjdG9yID4gc3BhbiB7CisgICAgbWFy
Z2luLWxlZnQ6IDIxcHg7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVj
dG9yLXNlY3Rpb24gPiAuaGVhZGVyID4gLmNvbnRyb2xzIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgcmlnaHQ6IDA7CisgICAgdG9wOiAwOworICAgIGJvcmRlci1sZWZ0OiAxcHggc29s
aWQgaHNsKDAsIDAlLCA4MyUpOworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1z
ZWxlY3Rvci1zZWN0aW9uLmNvbGxhcHNlZCA+IC5oZWFkZXIgPiAuY29udHJvbHMgeworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9y
LXNlY3Rpb24gPiAuaGVhZGVyID4gLmNvbnRyb2xzID4gLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1z
ZWN0aW9uLWFkZC1ydWxlIHsKKyAgICB3aWR0aDogMjNweDsKKyAgICBoZWlnaHQ6IDIxcHg7Cisg
ICAgcGFkZGluZzogNHB4IDVweDsKKyAgICAtd2Via2l0LWZpbHRlcjogb3BhY2l0eSgwLjcpOwor
fQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uID4gLmNv
bnRlbnQgPiAuc2VsZWN0b3JzIHsKKyAgICBtYXgtaGVpZ2h0OiAxMTBweDsKKyAgICBvdmVyZmxv
dzogYXV0bzsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2Vj
dGlvbiA+IC5jb250ZW50ID4gLnNlbGVjdG9ycyA+IC5zZWxlY3Rvci1saXN0IHsKKyAgICBtYXJn
aW46IDA7CisgICAgcGFkZGluZy1sZWZ0OiAwOworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy5k
ZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24gPiAuY29udGVudCA+
IC5zZWxlY3RvcnMgPiAuc2VsZWN0b3ItbGlzdCA+IC52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRl
bTpudGgtY2hpbGQob2RkKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDEwMCUsIDEw
MCUpOworfQorCisuZGV0YWlscy1zZWN0aW9uLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9u
ID4gLmNvbnRlbnQgPiAuc2VsZWN0b3JzID4gLnNlbGVjdG9yLWxpc3QgPiAuc2VjdGlvbi1kaXZp
ZGVyIHsKKyAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CisgICAgdG9wOiAtMXB4OworICAg
IGhlaWdodDogMTdweDsKKyAgICBwYWRkaW5nOiAycHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
aHNsKDAsIDAlLCA5NSUpOworICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA3MCUpOworICAg
IGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVyLXdpZHRoOiAxcHggMDsKKyAgICB6LWlu
ZGV4OiAxMDA7Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24udmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNl
Y3Rpb24gPiAuY29udGVudCA+IC5zZWxlY3RvcnMgPiAuc2VsZWN0b3ItbGlzdCA+IC5zZWN0aW9u
LWRpdmlkZXIgPiA6bWF0Y2hlcyguZGlzY2xvc3VyZS1idXR0b24sIC5pY29uKSB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0b3It
c2VjdGlvbiA+IC5jb250ZW50ID4gLnNlbGVjdG9ycyA+IC5zZWxlY3Rvci1saXN0ID4gLnNlY3Rp
b24tZGl2aWRlciA+IC50aXRsZXMgPiAudGl0bGUgeworICAgIG92ZXJmbG93OiBoaWRkZW47Cisg
ICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKK30K
KworLmRldGFpbHMtc2VjdGlvbi52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5jb250
ZW50ID4gLnNlbGVjdG9ycyA+IC5zZWxlY3Rvci1saXN0ID4gLnNlY3Rpb24tZGl2aWRlciB+IC52
aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbTpudGgtY2hpbGQoZXZlbikgeworICAgIGJhY2tncm91
bmQtY29sb3I6IGhzbCgwLCAxMDAlLCAxMDAlKTsKK30KKworLmRldGFpbHMtc2VjdGlvbi52aXN1
YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbiA+IC5jb250ZW50ID4gLnNlbGVjdG9ycyA+IC5zZWxl
Y3Rvci1saXN0ID4gLnNlY3Rpb24tZGl2aWRlciB+IC52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRl
bTpudGgtY2hpbGQob2RkKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYzNlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9y
U2VjdGlvbi5qcwpAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbiA9IGNsYXNzIFZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0
aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uCit7CisgICAgY29uc3RydWN0
b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0b3JTZWN0aW9uID0ge2VsZW1l
bnQ6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfTsKKyAgICAgICAgc2VsZWN0b3JTZWN0
aW9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0b3JzIik7CisKKyAgICAgICAgbGV0IGNv
bnRyb2xFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNv
bnRyb2xFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRyb2xzIik7CisKKyAgICAgICAgc3VwZXIo
InZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHlsZSBSdWxlcyIpLCBbc2VsZWN0b3JTZWN0aW9uXSwgY29udHJvbEVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fbm9k
ZVN0eWxlcyA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fY3VycmVudFNlbGVjdG9yRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jdXJyZW50U2Vs
ZWN0b3JFbGVtZW50LmNsYXNzTGlzdC5hZGQoImN1cnJlbnQtc2VsZWN0b3IiKTsKKworICAgICAg
ICBsZXQgY3VycmVudFNlbGVjdG9ySWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICAgICAgY3VycmVudFNlbGVjdG9ySWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiaWNvbiIpOworICAgICAgICB0aGlzLl9jdXJyZW50U2VsZWN0b3JFbGVtZW50LmFwcGVuZENo
aWxkKGN1cnJlbnRTZWxlY3Rvckljb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jdXJyZW50
U2VsZWN0b3JUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0
aGlzLl9jdXJyZW50U2VsZWN0b3JFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2N1cnJlbnRTZWxl
Y3RvclRleHQpOworCisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY3VycmVudFNlbGVjdG9yRWxlbWVudCk7CisKKyAgICAgICAgbGV0IHNlbGVjdG9yTGlzdEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICBzZWxlY3Rvckxp
c3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdG9yLWxpc3QiKTsKKyAgICAgICAgc2VsZWN0
b3JTZWN0aW9uLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VsZWN0b3JMaXN0RWxlbWVudCk7CisKKyAg
ICAgICAgdGhpcy5fc2VsZWN0b3JzID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZShzZWxl
Y3Rvckxpc3RFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JzLm9uc2VsZWN0ID0gdGhp
cy5fc2VsZWN0b3JDaGFuZ2VkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2ZvY3VzTmV4dE5l
d0luc3BlY3RvclJ1bGUgPSBmYWxzZTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIklt
YWdlcy9QbHVzLnN2ZyIsICJ2aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbi1hZGQtcnVsZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gYWRkIGEgbmV3IHJ1bGUuIiksIGZ1bmN0
aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9hZGROZXdSdWxlLmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udHJvbEVs
ZW1lbnQuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0
aGlzLl9oYW5kbGVNb3VzZU92ZXIuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2hlYWRlckVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9oYW5kbGVNb3VzZU91dC5i
aW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHVwZGF0ZShub2RlU3R5
bGVzKQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxlID0gdGhpcy5jdXJyZW50U3R5bGUoKTsKKyAg
ICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlc1tXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uTGFzdFNlbGVjdGVkUnVsZVN5bWJvbF0gPSBz
dHlsZTsKKworICAgICAgICBpZiAobm9kZVN0eWxlcykKKyAgICAgICAgICAgIHRoaXMuX25vZGVT
dHlsZXMgPSBub2RlU3R5bGVzOworCisgICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zZWxlY3RvcnMucmVtb3ZlQ2hpbGRy
ZW4oKTsKKyAgICAgICAgbGV0IHByZXZpb3VzUnVsZSA9IG51bGw7CisKKyAgICAgICAgLy8gUHNl
dWRvIFN0eWxlcworICAgICAgICBsZXQgcHNldWRvUnVsZXMgPSBbXTsKKyAgICAgICAgbGV0IHBz
ZXVkb0VsZW1lbnRzID0gdGhpcy5fbm9kZVN0eWxlcy5wc2V1ZG9FbGVtZW50czsKKyAgICAgICAg
Zm9yIChsZXQgcHNldWRvSWRlbnRpZmllciBpbiBwc2V1ZG9FbGVtZW50cykKKyAgICAgICAgICAg
IHBzZXVkb1J1bGVzID0gcHNldWRvUnVsZXMuY29uY2F0KHBzZXVkb0VsZW1lbnRzW3BzZXVkb0lk
ZW50aWZpZXJdLm1hdGNoZWRSdWxlcyk7CisKKyAgICAgICAgbGV0IG9yZGVyZWRQc2V1ZG9SdWxl
cyA9IHVuaXF1ZU9yZGVyZWRSdWxlcyhwc2V1ZG9SdWxlcyk7CisgICAgICAgIC8vIFJldmVyc2Ug
dGhlIGFycmF5IHRvIGVuc3VyZSB0aGF0IHNwbGljaW5nIHRoZSBhcnJheSB3aWxsIG5vdCBtZXNz
IHdpdGggdGhlIG9yZGVyLgorICAgICAgICBpZiAob3JkZXJlZFBzZXVkb1J1bGVzLmxlbmd0aCkK
KyAgICAgICAgICAgIG9yZGVyZWRQc2V1ZG9SdWxlcy5yZXZlcnNlKCk7CisKKyAgICAgICAgZnVu
Y3Rpb24gY3JlYXRlU2VsZWN0b3JJdGVtKHN0eWxlLCB0aXRsZSwgc3VidGl0bGUpIHsKKyAgICAg
ICAgICAgIGxldCBzZWxlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3Rv
clRyZWVJdGVtKHN0eWxlLCB0aXRsZSwgc3VidGl0bGUpOworICAgICAgICAgICAgc2VsZWN0b3Iu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVt
LkV2ZW50LlN0eWxlVGV4dFJlc2V0LCB0aGlzLl9zdHlsZVRleHRSZXNldCwgdGhpcyk7CisgICAg
ICAgICAgICBzZWxlY3Rvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVNlbGVjdG9yVHJlZUl0ZW0uRXZlbnQuQ2hlY2tib3hDaGFuZ2VkLCB0aGlzLl90cmVlRWxlbWVu
dENoZWNrYm94VG9nZ2xlZCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RvcnMuYXBw
ZW5kQ2hpbGQoc2VsZWN0b3IpOworCisgICAgICAgICAgICBpZiAodGhpcy5fZm9jdXNOZXh0TmV3
SW5zcGVjdG9yUnVsZSAmJiBzdHlsZS5vd25lclJ1bGUgJiYgc3R5bGUub3duZXJSdWxlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuSW5zcGVjdG9yKSB7CisgICAgICAgICAgICAg
ICAgc2VsZWN0b3Iuc2VsZWN0KHRydWUpOworICAgICAgICAgICAgICAgIHNlbGVjdG9yLmVsZW1l
bnQuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzW1dl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5MYXN0U2VsZWN0ZWRSdWxlU3lt
Ym9sXSA9IHN0eWxlOworICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzTmV4dE5ld0luc3BlY3Rv
clJ1bGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh0aGlzLl9ub2RlU3R5bGVzW1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVNlbGVjdG9yU2VjdGlvbi5MYXN0U2VsZWN0ZWRSdWxlU3ltYm9sXSA9PT0gc3R5bGUpIHsKKyAg
ICAgICAgICAgICAgICBzZWxlY3Rvci5zZWxlY3QodHJ1ZSk7CisgICAgICAgICAgICAgICAgc2Vs
ZWN0b3IuZWxlbWVudC5zY3JvbGxJbnRvVmlldygpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gdW5pcXVlT3JkZXJlZFJ1bGVzKG9yZGVyZWRSdWxlcykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFvcmRlcmVkUnVsZXMgfHwgIW9yZGVyZWRSdWxlcy5s
ZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheTsKKworICAgICAgICAgICAg
bGV0IHVuaXF1ZVJ1bGVzID0gbmV3IE1hcDsKKyAgICAgICAgICAgIGZvciAobGV0IHJ1bGUgb2Yg
b3JkZXJlZFJ1bGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKCF1bmlxdWVSdWxlcy5oYXMocnVs
ZS5pZCkpCisgICAgICAgICAgICAgICAgICAgIHVuaXF1ZVJ1bGVzLnNldChydWxlLmlkLCBydWxl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHVuaXF1ZVJ1
bGVzLnZhbHVlcygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluc2VydEFsbE1h
dGNoaW5nUHNldWRvUnVsZXMoZm9yY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghb3Jk
ZXJlZFBzZXVkb1J1bGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGlmIChmb3JjZSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBvcmRlcmVk
UHNldWRvUnVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHBzZXVkb1J1bGUgPSBvcmRlcmVkUHNldWRvUnVsZXNbaV07CisgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNlbGVjdG9ySXRlbS5jYWxsKHRoaXMsIHBzZXVkb1J1bGUuc3R5bGUsIHBz
ZXVkb1J1bGUuc2VsZWN0b3JUZXh0LCBwc2V1ZG9SdWxlLm1lZGlhVGV4dCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG9yZGVyZWRQc2V1ZG9SdWxlcyA9IFtdOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByZXZpb3VzUnVsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSBvcmRlcmVkUHNldWRvUnVsZXMu
bGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBsZXQgcHNldWRvUnVs
ZSA9IG9yZGVyZWRQc2V1ZG9SdWxlc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoIXBzZXVkb1J1
bGUuc2VsZWN0b3JJc0dyZWF0ZXIocHJldmlvdXNSdWxlLm1vc3RTcGVjaWZpY1NlbGVjdG9yKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBjcmVhdGVT
ZWxlY3Rvckl0ZW0uY2FsbCh0aGlzLCBwc2V1ZG9SdWxlLnN0eWxlLCBwc2V1ZG9SdWxlLnNlbGVj
dG9yVGV4dCwgcHNldWRvUnVsZS5tZWRpYVRleHQpOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
UnVsZSA9IHBzZXVkb1J1bGU7CisgICAgICAgICAgICAgICAgb3JkZXJlZFBzZXVkb1J1bGVzLnNw
bGljZShpLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhp
cy5fbm9kZVN0eWxlc1tXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uTGFz
dFNlbGVjdGVkUnVsZVN5bWJvbF0pCisgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzW1dlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5MYXN0U2VsZWN0ZWRSdWxlU3ltYm9s
XSA9IHRoaXMuX25vZGVTdHlsZXMuaW5saW5lU3R5bGU7CisKKyAgICAgICAgLy8gSW5saW5lIFN0
eWxlCisgICAgICAgIGNyZWF0ZVNlbGVjdG9ySXRlbS5jYWxsKHRoaXMsIHRoaXMuX25vZGVTdHls
ZXMuaW5saW5lU3R5bGUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhpcyBFbGVtZW50IikpOwor
CisgICAgICAgIC8vIE1hdGNoZWQgUnVsZXMKKyAgICAgICAgZm9yIChsZXQgcnVsZSBvZiB1bmlx
dWVPcmRlcmVkUnVsZXModGhpcy5fbm9kZVN0eWxlcy5tYXRjaGVkUnVsZXMpKSB7CisgICAgICAg
ICAgICBpZiAocnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLlVzZXJBZ2Vu
dCkgeworICAgICAgICAgICAgICAgIGluc2VydEFsbE1hdGNoaW5nUHNldWRvUnVsZXMuY2FsbCh0
aGlzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaW5zZXJ0QWxsTWF0Y2hpbmdQc2V1ZG9SdWxlcy5jYWxsKHRoaXMpOworICAg
ICAgICAgICAgY3JlYXRlU2VsZWN0b3JJdGVtLmNhbGwodGhpcywgcnVsZS5zdHlsZSwgcnVsZS5z
ZWxlY3RvclRleHQsIHJ1bGUubWVkaWFUZXh0KTsKKyAgICAgICAgICAgIHByZXZpb3VzUnVsZSA9
IHJ1bGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBKdXN0IGluIGNhc2UgdGhlcmUgYXJlIGFu
eSByZW1haW5pbmcgcHNldWRvLXN0eWxlcy4KKyAgICAgICAgaW5zZXJ0QWxsTWF0Y2hpbmdQc2V1
ZG9SdWxlcy5jYWxsKHRoaXMsIHRydWUpOworCisgICAgICAgIC8vIEluaGVyaXRlZCBSdWxlcwor
ICAgICAgICBmb3IgKGxldCBpbmhlcml0ZWQgb2YgdGhpcy5fbm9kZVN0eWxlcy5pbmhlcml0ZWRS
dWxlcykgeworICAgICAgICAgICAgaWYgKCFpbmhlcml0ZWQubWF0Y2hlZFJ1bGVzIHx8ICFpbmhl
cml0ZWQubWF0Y2hlZFJ1bGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgbGV0IGRpdmlkZXJUZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmhl
cml0ZWQgZnJvbSAlcyIpLmZvcm1hdChXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKGlu
aGVyaXRlZC5ub2RlKSk7CisgICAgICAgICAgICBsZXQgZGl2aWRlciA9IG5ldyBXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50KCJzZWN0aW9uLWRpdmlkZXIiLCBkaXZpZGVyVGV4dCk7Cisg
ICAgICAgICAgICBkaXZpZGVyLnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMu
X3NlbGVjdG9ycy5hcHBlbmRDaGlsZChkaXZpZGVyKTsKKworICAgICAgICAgICAgZm9yIChsZXQg
cnVsZSBvZiB1bmlxdWVPcmRlcmVkUnVsZXMoaW5oZXJpdGVkLm1hdGNoZWRSdWxlcykpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBl
LlVzZXJBZ2VudCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICBjcmVhdGVTZWxlY3Rvckl0ZW0uY2FsbCh0aGlzLCBydWxlLnN0eWxlLCBydWxlLnNlbGVj
dG9yVGV4dCwgcnVsZS5tZWRpYVRleHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5fZm9jdXNOZXh0TmV3SW5zcGVjdG9yUnVsZSA9IGZhbHNlOworICAgIH0KKwor
ICAgIGN1cnJlbnRTdHlsZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX25vZGVTdHlsZXMg
fHwgIXRoaXMuX3NlbGVjdG9ycy5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RvcnMuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfc2Vs
ZWN0b3JDaGFuZ2VkKHNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChzZWxlY3RlZFRyZWVFbGVtZW50KTsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVF
bGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBjbGFzcyBuZWVk
cyB0byBiZSBjb21wbGV0ZWx5IHJlc2V0IGFzIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHRyZWVF
bGVtZW50IG1vc3QgbGlrZWx5IGhhZAorICAgICAgICAvLyBhIGRpZmZlcmVudCBpY29uIGNsYXNz
TmFtZSBhbmQgaXQgaXMgc2ltcGxlciB0byByZWdlbmVyYXRlIHRoZSBjbGFzcyB0aGFuIHRvIGZp
bmQgb3V0IHdoaWNoCisgICAgICAgIC8vIGNsYXNzIHdhcyBwcmV2aW91c2x5IGFwcGxpZWQuCisg
ICAgICAgIHRoaXMuX2N1cnJlbnRTZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gImN1cnJlbnQt
c2VsZWN0b3IgIiArIHNlbGVjdGVkVHJlZUVsZW1lbnQuaWNvbkNsYXNzTmFtZTsKKworICAgICAg
ICBsZXQgc2VsZWN0b3JUZXh0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5tYWluVGl0bGU7CisgICAg
ICAgIGxldCBtZWRpYVRleHQgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnN1YnRpdGxlOworICAgICAg
ICBpZiAobWVkaWFUZXh0ICYmIG1lZGlhVGV4dC5sZW5ndGgpCisgICAgICAgICAgICBzZWxlY3Rv
clRleHQgKz0gIiBcdTIwMTQgIiArIG1lZGlhVGV4dDsgLy8gZW0tZGFzaAorCisgICAgICAgIHRo
aXMuX2N1cnJlbnRTZWxlY3RvclRleHQudGV4dENvbnRlbnQgPSBzZWxlY3RvclRleHQ7CisKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlU2VsZWN0b3JTZWN0aW9uLkV2ZW50LlNlbGVjdG9yQ2hhbmdlZCk7CisgICAgfQorCisgICAg
X3N0eWxlVGV4dFJlc2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TdHls
ZVRleHRDaGFuZ2VkKTsKKyAgICB9CisKKyAgICBfYWRkTmV3UnVsZShldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9ub2RlU3R5bGVzLmFkZEVtcHR5UnVsZSgpOworICAgICAgICB0aGlzLl9mb2N1
c05leHROZXdJbnNwZWN0b3JSdWxlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBfdHJlZUVsZW1lbnRD
aGVja2JveFRvZ2dsZWQoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgc3R5bGUgPSB0aGlzLmN1
cnJlbnRTdHlsZSgpOworICAgICAgICBpZiAoIXN0eWxlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGxldCBzdHlsZVRleHQgPSBzdHlsZS50ZXh0OworICAgICAgICBpZiAoIXN0eWxl
VGV4dCB8fCAhc3R5bGVUZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBDb21tZW50IG9yIHVuY29tbWVudCB0aGUgc3R5bGUgdGV4dC4KKyAgICAgICAgbGV0IG5l
d1N0eWxlVGV4dCA9ICIiOworICAgICAgICBsZXQgc3R5bGVFbmFibGVkID0gZXZlbnQgJiYgZXZl
bnQuZGF0YSAmJiBldmVudC5kYXRhLmVuYWJsZWQ7CisgICAgICAgIGlmIChzdHlsZUVuYWJsZWQp
CisgICAgICAgICAgICBuZXdTdHlsZVRleHQgPSBzdHlsZVRleHQucmVwbGFjZSgvXHMqKFwvXCp8
XCpcLylccyovZywgIiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdTdHlsZVRleHQg
PSAiLyogIiArIHN0eWxlVGV4dC5yZXBsYWNlKC8oXHMqOyg/ISQpXHMqKS9nLCAiJDEgKi8vKiAi
KSArICIgKi8iOworCisgICAgICAgIHN0eWxlLnRleHQgPSBuZXdTdHlsZVRleHQ7CisgICAgICAg
IHN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURpc2FibGVk
U3ltYm9sXSA9ICFzdHlsZUVuYWJsZWQ7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TZWxl
Y3RvckNoYW5nZWQpOworCisgICAgfQorCisgICAgX2hhbmRsZU1vdXNlT3ZlcigpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGxldCBzdHlsZSA9IHRoaXMuY3VycmVudFN0eWxlKCk7CisgICAgICAgIGlmICghc3R5bGUu
b3duZXJSdWxlKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGln
aGxpZ2h0RE9NTm9kZShzdHlsZS5ub2RlLmlkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRTZWxl
Y3RvcihzdHlsZS5vd25lclJ1bGUuc2VsZWN0b3JUZXh0LCBzdHlsZS5ub2RlLm93bmVyRG9jdW1l
bnQuZnJhbWVJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VPdXQoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQo
KTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24u
TGFzdFNlbGVjdGVkUnVsZVN5bWJvbCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNl
Y3Rpb24tbGFzdC1zZWxlY3RlZC1ydWxlIik7CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNl
bGVjdG9yU2VjdGlvbi5FdmVudCA9IHsKKyAgICBTZWxlY3RvckNoYW5nZWQ6ICJ2aXN1YWwtc3R5
bGUtc2VsZWN0b3Itc2VjdGlvbi1zZWxlY3Rvci1jaGFuZ2VkIiwKKyAgICBTdHlsZVRleHRDaGFu
Z2VkOiAidmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24tc3R5bGUtdGV4dC1jaGFuZ2VkIgor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0MmY0MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2Vs
ZWN0b3JUcmVlSXRlbS5jc3MKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuaXRlbS52
aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbSB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDI1cHg7CisgICAgcGFkZGluZzogMnB4IDA7CisgICAgbGlu
ZS1oZWlnaHQ6IDIwcHg7CisgICAgZm9udC1zaXplOiAxMXB4OworfQorCisuaXRlbS52aXN1YWwt
c3R5bGUtc2VsZWN0b3ItaXRlbS5zZWxlY3RlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNs
KDIxMywgOTIlLCA1NSUpICFpbXBvcnRhbnQ7CisgICAgY29sb3I6IGhzbCgwLCAxMDAlLCAxMDAl
KTsKK30KKworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0gPiAuZGlzY2xvc3VyZS1i
dXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5pdGVtLnZpc3VhbC1zdHlsZS1zZWxl
Y3Rvci1pdGVtID4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CisgICAgbWFyZ2luOiA0LjVweCAw
IDRweCA1cHg7Cit9CisKKy5pdGVtLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1pdGVtID4gLmljb24g
eworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKyAgICBtYXJnaW46IDIuNXB4
IDAgMi41cHggNHB4OworfQorCisuaXRlbS52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbS5tb2Rp
ZmllZCA+IC5pY29uIHsKKyAgICAtd2Via2l0LWZpbHRlcjogYnJpZ2h0bmVzcygwLjc1KTsKK30K
KworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0uc2VsZWN0b3ItaW52YWxpZCA+IC5p
Y29uIHsKKyAgICB3aWR0aDogMTRweDsKKyAgICBoZWlnaHQ6IDE0cHg7CisgICAgbWFyZ2luOiAz
LjVweCAwIDMuNXB4IDVweDsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Vycm9yLnN2Zyk7
Cit9CisKKy5pdGVtLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1pdGVtLnNlbGVjdG9yLWludmFsaWQg
PiAudGl0bGVzID4gLnRpdGxlIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5pdGVt
LnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1pdGVtLnNlbGVjdG9yLWludmFsaWQgPiAudGl0bGVzID4g
LnRpdGxlOjpiZWZvcmUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IGNhbGMo
NTAlIC0gMC41cHgpOworICAgIGxlZnQ6IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgYm9yZGVy
LWJvdHRvbTogMXB4IHNvbGlkIGhzbGEoMCwgMTAwJSwgNTAlLCAwLjYpOworICAgIGNvbnRlbnQ6
ICIiOworfQorCisuaXRlbS52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbSA+IC50aXRsZXMgewor
ICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICB0ZXh0
LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBwYWRkaW5nOiAwIDJweCAwIDNweDsKK30KKworLml0
ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06bm90KC5kb20tZWxlbWVudC1pY29uKSA+IC50
aXRsZXMgPiAudGl0bGUgeworICAgIHBhZGRpbmc6IDAgMXB4IDJweDsKKyAgICBsaW5lLWhlaWdo
dDogMTJweDsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuaXRlbS52aXN1YWwtc3R5bGUtc2Vs
ZWN0b3ItaXRlbTpub3QoLmRvbS1lbGVtZW50LWljb24pLmVkaXRhYmxlID4gLnRpdGxlcyA+IC50
aXRsZSB7CisgICAgY3Vyc29yOiB0ZXh0OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7
CisgICAgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0ZS1wbGFpbnRleHQtb25seTsKK30K
KworLml0ZW0udmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW06bm90KC5kb20tZWxlbWVudC1pY29u
KS5lZGl0YWJsZSA+IC50aXRsZXMgPiAudGl0bGU6Zm9jdXMgeworICAgIGNvbG9yOiBibGFjazsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7CisgICAgYm9yZGVyLXJh
ZGl1czogMnB4OworICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjE1KSAwIDFweCAw
LCAwIDAgMCAzcHggaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjMpOworfQorCisuaXRlbS52aXN1YWwt
c3R5bGUtc2VsZWN0b3ItaXRlbSA+IC50aXRsZXMgPiAuc3VidGl0bGU6OmJlZm9yZSB7CisgICAg
bWFyZ2luLXJpZ2h0OiA1cHg7CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIC8qIFRoZSBleHRy
YSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSAtd2Vi
a2l0LXVzZXItbW9kaWZ5CisgICAgY3Vyc29yIGJhciBmcm9tIGRpc3BsYXlpbmcgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgZW0tZGFzaC4gKi8KKyAgICBjb250ZW50OiAiIFwyMDE0IjsgLyogZW0t
ZGFzaCAqLworfQorCisuaXRlbS52aXN1YWwtc3R5bGUtc2VsZWN0b3ItaXRlbSA+IC50aXRsZXMg
PiAuc3VidGl0bGUgeworICAgIGZvbnQtc2l6ZTogOXB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclRy
ZWVJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMzZjQwOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0uanMKQEAgLTAs
MCArMSwyMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3Rv
clRyZWVJdGVtID0gY2xhc3MgVmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHN0eWxlLCB0
aXRsZSwgc3VidGl0bGUpCisgICAgeworICAgICAgICBsZXQgaWNvbkNsYXNzTmFtZTsKKyAgICAg
ICAgc3dpdGNoIChzdHlsZS50eXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24uVHlwZS5SdWxlOgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5
bGUub3duZXJSdWxlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1J1bGUsIHN0eWxlLm93bmVy
UnVsZSk7CisKKyAgICAgICAgICAgIGlmIChzdHlsZS5pbmhlcml0ZWQpCisgICAgICAgICAgICAg
ICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5Jbmhlcml0ZWRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNl
IGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5B
dXRob3IpCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5BdXRob3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7
CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkNTU1J1bGUuVHlwZS5Vc2VyKQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlclN0eWxlUnVsZUljb25T
dHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLlVzZXJBZ2VudCkKKyAgICAgICAgICAgICAg
ICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9u
LlVzZXJBZ2VudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHN0eWxlLm93bmVyUnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLklu
c3BlY3RvcikKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluc3BlY3RvclN0eWxlUnVsZUljb25TdHlsZUNsYXNz
TmFtZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb24uVHlwZS5JbmxpbmU6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5BdHRyaWJ1dGU6CisgICAgICAgICAgICBpZiAoc3R5
bGUuaW5oZXJpdGVkKQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkRWxlbWVudFN0eWxlUnVsZUlj
b25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpY29u
Q2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01F
bGVtZW50SWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICB0aXRsZSA9IHRpdGxlLnRyaW0oKTsKKworICAgICAgICBzdXBlcihbInZpc3Vh
bC1zdHlsZS1zZWxlY3Rvci1pdGVtIiwgaWNvbkNsYXNzTmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwg
c3R5bGUpOworCisgICAgICAgIHRoaXMuX2ljb25DbGFzc05hbWUgPSBpY29uQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aXRsZTsKKyAgICAgICAgdGhpcy5fZW5hYmxlRWRp
dGluZyA9IHRydWU7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgaWNvbkNsYXNz
TmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWNvbkNsYXNzTmFtZTsKKyAgICB9
CisKKyAgICBnZXQgc2VsZWN0b3JUZXh0KCkKKyAgICB7CisgICAgICAgIGxldCB0aXRsZVRleHQg
PSB0aGlzLl9tYWluVGl0bGVFbGVtZW50LnRleHRDb250ZW50OworICAgICAgICBpZiAoIXRpdGxl
VGV4dCB8fCAhdGl0bGVUZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgIHRpdGxlVGV4dCA9IHRoaXMu
X21haW5UaXRsZTsKKworICAgICAgICByZXR1cm4gdGl0bGVUZXh0LnRyaW0oKTsKKyAgICB9CisK
KyAgICAvLyBQcm90ZWN0ZWQKKworICAgIG9uYXR0YWNoKCkKKyAgICB7CisgICAgICAgIHN1cGVy
Lm9uYXR0YWNoKCk7CisKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2hpZ2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dXQiLCB0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFu
ZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9jaGVja2Jv
eEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICB0aGlz
Ll9jaGVja2JveEVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgIHRoaXMuX2NoZWNr
Ym94RWxlbWVudC5jaGVja2VkID0gIXRoaXMucmVwcmVzZW50ZWRPYmplY3RbV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRTeW1ib2xdOworICAgICAgICB0
aGlzLl91cGRhdGVDaGVja2JveFRpdGxlKCk7CisgICAgICAgIHRoaXMuX2NoZWNrYm94RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9oYW5kbGVDaGVja2JveENoYW5nZWQu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5pbnNlcnRCZWZvcmUodGhp
cy5fY2hlY2tib3hFbGVtZW50LCB0aGlzLl9pY29uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5f
bWFpblRpdGxlRWxlbWVudC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgICAgIHRoaXMuX21haW5U
aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTWFp
blRpdGxlTW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9tYWluVGl0bGVFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVNYWluVGl0bGVLZXlE
b3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9tYWluVGl0bGVFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleXVwIiwgdGhpcy5faGlnaGxpZ2h0Tm9kZXNXaXRoU2VsZWN0b3IuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX21haW5UaXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Ymx1ciIsIHRoaXMuX2NvbW1pdFNlbGVjdG9yLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5FdmVudC5Jbml0aWFsVGV4dE1vZGlmaWVkLCB0aGlzLl9zdHlsZVRleHRNb2Rp
ZmllZCwgdGhpcyk7CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm93bmVyUnVs
ZSkKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qub3duZXJSdWxlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1J1bGUuRXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlz
Ll9zZWxlY3RvckNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3N0eWxlVGV4dE1vZGlm
aWVkKCk7CisgICAgfQorCisgICAgb25kZXNlbGVjdCgpCisgICAgeworICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGFibGUiKTsKKyAgICB9CisKKyAgICAv
LyBQcml2YXRlCisKKyAgICBfaGlnaGxpZ2h0Tm9kZXNXaXRoU2VsZWN0b3IoKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm93bmVyUnVsZSkgeworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5ub2RlLmlkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRTZWxlY3Rvcih0
aGlzLnNlbGVjdG9yVGV4dCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlLm93bmVyRG9jdW1l
bnQuZnJhbWVJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBfaGlkZURPTU5vZGVIaWdobGlnaHQo
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2Rl
SGlnaGxpZ2h0KCk7CisgICAgfQorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQp
CisgICAgeworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKKworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29weSBSdWxlIiksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0
IHNlbGVjdG9yVGV4dCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm93bmVyUnVsZSA/IHRoaXMu
cmVwcmVzZW50ZWRPYmplY3Qubm9kZS5hcHByb3ByaWF0ZVNlbGVjdG9yRm9yKHRydWUpIDogbnVs
bDsKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dCh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmdlbmVyYXRlQ1NTUnVsZVN0cmluZyhzZWxlY3RvclRleHQpKTsKKyAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVzZXQiKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnJlc2V0VGV4dCgpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRl
bS5FdmVudC5TdHlsZVRleHRSZXNldCk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAg
ICAgY29udGV4dE1lbnUuc2hvdygpOworICAgIH0KKworICAgIF9oYW5kbGVDaGVja2JveENoYW5n
ZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGVDaGVja2JveFRpdGxlKCk7Cisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVNlbGVjdG9yVHJlZUl0ZW0uRXZlbnQuQ2hlY2tib3hDaGFuZ2VkLCB7ZW5hYmxlZDogdGhp
cy5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWR9KTsKKyAgICB9CisKKyAgICBfdXBkYXRlQ2hlY2ti
b3hUaXRsZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY2hlY2tib3hFbGVtZW50LmNoZWNr
ZWQpCisgICAgICAgICAgICB0aGlzLl9jaGVja2JveEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGRpc2FibGUgdGhlIHNlbGVjdGVkIHJ1bGUiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fY2hlY2tib3hFbGVtZW50LnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBlbmFibGUgdGhlIHNlbGVjdGVkIHJ1bGUiKTsKKyAg
ICB9CisKKyAgICBfaGFuZGxlTWFpblRpdGxlTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC50b2dnbGUoImVkaXRhYmxlIiwgdGhpcy5z
ZWxlY3RlZCk7CisgICAgfQorCisgICAgX2hhbmRsZU1haW5UaXRsZUtleURvd24oZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLl9oaWdobGlnaHROb2Rlc1dpdGhTZWxlY3RvcigpOworCisgICAg
ICAgIGxldCBlbnRlcktleUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXku
RW50ZXIua2V5Q29kZTsKKyAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGVudGVyS2V5Q29k
ZSkKKyAgICAgICAgICAgIHRoaXMuX21haW5UaXRsZUVsZW1lbnQuYmx1cigpOworICAgIH0KKwor
ICAgIF9jb21taXRTZWxlY3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9oaWRlRE9NTm9kZUhp
Z2hsaWdodCgpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgi
ZWRpdGFibGUiKTsKKworICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnNlbGVjdG9yVGV4dDsKKyAg
ICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9sYXN0VmFsdWUgJiYgdGhpcy5fdmFsaWQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5vd25lclJ1
bGUuc2VsZWN0b3JUZXh0ID0gdmFsdWU7CisgICAgfQorCisgICAgX3N0eWxlVGV4dE1vZGlmaWVk
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QudG9nZ2xlKCJt
b2RpZmllZCIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QubW9kaWZpZWQpOworICAgIH0KKworICAg
IF9zZWxlY3RvckNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl92YWxpZCA9IGV2
ZW50ICYmIGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS52YWxpZDsKKyAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdG9yLWludmFsaWQiLCAhdGhpcy5fdmFs
aWQpOworICAgICAgICBsZXQgaW52YWxpZFRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
aGUgc2VsZWN0b3IgJyVzJyBpcyBpbnZhbGlkLiIpLmZvcm1hdCh0aGlzLnNlbGVjdG9yVGV4dCk7
CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0gIXRoaXMuX3ZhbGlkID8gaW52YWxp
ZFRpdGxlIDogbnVsbDsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxl
Y3RvclRyZWVJdGVtLkV2ZW50ID0geworICAgIFN0eWxlVGV4dFJlc2V0OiAidmlzdWFsLXN0eWxl
LXNlbGVjdG9yLWl0ZW0tc3R5bGUtdGV4dC1yZXNldCIsCisgICAgQ2hlY2tib3hDaGFuZ2VkOiAi
dmlzdWFsLXN0eWxlLXNlbGVjdG9yLWl0ZW0tY2hlY2tib3gtY2hhbmdlZCIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIu
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MGQxMTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzcwpAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyIH4g
Om5vdCgudmlzaWJsZSkgeworICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICBoZWlnaHQ6IDA7
Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgeworICAgIG1h
cmdpbjogMCBhdXRvOworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRy
b2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFp
bmVyID4gYnV0dG9uIHsKKyAgICBtYXJnaW46IDAgMnB4IDJweDsKKyAgICBib3JkZXItcmFkaXVz
OiAzcHg7CisgICAgYm9yZGVyLXdpZHRoOiAwIDFweDsKKyAgICBib3JkZXItY29sb3I6IHRyYW5z
cGFyZW50OworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCisudmlzdWFs
LXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJl
ZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9uLnNlbGVjdGVkIHsKKyAg
ICBjb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgy
MTMsIDkyJSwgNTUlKTsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250
cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRh
aW5lciA+IGJ1dHRvbjpub3QoLnNlbGVjdGVkKTpob3ZlciB7CisgICAgY29sb3I6IGhzbCgwLCAx
MDAlLCAxMDAlKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxMywgOTIlLCA1NSUsIDAu
NSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWEy
NDRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5qcwpAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJv
cGVydGllc0NvbnRyb2xsZXIgPSBjbGFzcyBWaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250
cm9sbGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29u
c3RydWN0b3IodGFiTWFwKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1j
b250cm9sbGVyIik7CisKKyAgICAgICAgbGV0IGNvbnRyb2xsZXJDb250YWluZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRyb2xsZXJDb250YWlu
ZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1j
b250cm9sbGVyLWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3RhYkJ1dHRvbnMgPSBbXTsK
KyAgICAgICAgdGhpcy5fdGFiTWFwID0gdGFiTWFwOworICAgICAgICBmb3IgKGxldCBrZXkgaW4g
dGhpcy5fdGFiTWFwKSB7CisgICAgICAgICAgICBsZXQgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBidXR0b24uaWQgPSBrZXk7CisgICAgICAg
ICAgICBidXR0b24udGV4dENvbnRlbnQgPSB0aGlzLl90YWJNYXBba2V5XS50aXRsZTsKKyAgICAg
ICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUJ1dHRv
bkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgICAgIGNvbnRyb2xsZXJDb250YWluZXJF
bGVtZW50LmFwcGVuZENoaWxkKGJ1dHRvbik7CisgICAgICAgICAgICB0aGlzLl90YWJCdXR0b25z
LnB1c2goYnV0dG9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBmaXJzdEJ1dHRvbiA9IHRo
aXMuX3RhYkJ1dHRvbnNbMF07CisgICAgICAgIGZpcnN0QnV0dG9uLmNsYXNzTGlzdC5hZGQoInNl
bGVjdGVkIik7CisgICAgICAgIHRoaXMuX3RhYk1hcFtmaXJzdEJ1dHRvbi5pZF0uZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJ2aXNpYmxlIik7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChjb250cm9sbGVyQ29udGFpbmVyRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0
ZQorCisgICAgX2hhbmRsZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICBmb3Ig
KGxldCBpdGVtIG9mIHRoaXMuX3RhYkJ1dHRvbnMpIHsKKyAgICAgICAgICAgIGxldCB0YWIgPSB0
aGlzLl90YWJNYXBbaXRlbS5pZF07CisgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBpdGVtID09
PSBldmVudC50YXJnZXQ7CisgICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC50b2dnbGUoInNlbGVj
dGVkIiwgc2VsZWN0ZWQpOworICAgICAgICAgICAgdGFiLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgidmlzaWJsZSIsIHNlbGVjdGVkKTsKKyAgICAgICAgICAgIGZvciAobGV0IHByb3BlcnR5RWRp
dG9yIG9mIHRhYi5wcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgIHByb3BlcnR5RWRpdG9yLnVw
ZGF0ZSgpOworICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9yLmNzcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGlt
aW5nRWRpdG9yLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmIxNmU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuY3NzCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZs
ZXg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3Ig
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5rZXl3b3JkLXBpY2tl
ci1zZWxlY3QgeworICAgIG9yZGVyOiAxOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgPiAuYmV6aWVyLWVkaXRvciB7CisgICAgd2lkdGg6IDIzcHg7CisgICAgaGVpZ2h0OiAy
MHB4OworICAgIG1hcmdpbjogMCAycHggMCAwLjVweDsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1h
Z2VzL0N1YmljQmV6aWVyLnN2Zyk7CisgICAgY3Vyc29yOiBkZWZhdWx0OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuYmV6aWVyLWVkaXRvcjpob3ZlciB7CisgICAgLXdl
YmtpdC1maWx0ZXI6IGJyaWdodG5lc3MoMC45KTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIudGltaW5nLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLmJlemllci1lZGl0b3I6YWN0aXZlIHsKKyAgICAtd2Via2l0LWZpbHRlcjog
YnJpZ2h0bmVzcygwLjgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzMxZjliCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVUaW1pbmdFZGl0b3IuanMKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZVRpbWlu
Z0VkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIKK3sK
KyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbGF5
b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBw
b3NzaWJsZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJ0aW1pbmctZWRpdG9yIik7CisKKyAgICAgICAgdGhpcy5fY3VzdG9tVmFs
dWVPcHRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAg
ICAgIHRoaXMuX2N1c3RvbVZhbHVlT3B0aW9uRWxlbWVudC52YWx1ZSA9ICJjdXN0b20iOworICAg
ICAgICB0aGlzLl9jdXN0b21WYWx1ZU9wdGlvbkVsZW1lbnQudGV4dCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ3VzdG9tIik7CisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2N1c3RvbVZhbHVlT3B0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhp
cy5fYmV6aWVyTWFya2VyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xpY2sgdG8gb3BlbiBhIGN1YmljLWJlemllciBlZGl0b3IiKTsKKyAgICAgICAg
dGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJiZXppZXItZWRpdG9yIik7
CisgICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2Jlemllck1hcmtlckNsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudCk7CisKKyAgICAg
ICAgdGhpcy5fYmV6aWVyRWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5CZXppZXJFZGl0b3I7Cisg
ICAgICAgIHRoaXMuX2JlemllckVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5C
ZXppZXJFZGl0b3IuRXZlbnQuQmV6aWVyQ2hhbmdlZCwgdGhpcy5fdmFsdWVEaWRDaGFuZ2UuYmlu
ZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2JlemllckVkaXRvci5iZXppZXIgPSBXZWJJbnNwZWN0
b3IuQ3ViaWNCZXppZXIuZnJvbVN0cmluZygibGluZWFyIik7CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBwYXJzZVZhbHVlKHRleHQpCisgICAgeworICAgICAgICByZXR1cm4gLyhj
dWJpYy1iZXppZXJcKC4rXCkpLy5leGVjKHRleHQpOworICAgIH0KKworICAgIGdldCBiZXppZXJW
YWx1ZSgpCisgICAgeworICAgICAgICBsZXQgYmV6aWVyID0gdGhpcy5fYmV6aWVyRWRpdG9yLmJl
emllcjsKKyAgICAgICAgaWYgKCFiZXppZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICByZXR1cm4gYmV6aWVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgc2V0IGJlemll
clZhbHVlKHRleHQpCisgICAgeworICAgICAgICBsZXQgYmV6aWVyID0gV2ViSW5zcGVjdG9yLkN1
YmljQmV6aWVyLmZyb21TdHJpbmcodGV4dCk7CisgICAgICAgIHRoaXMuX2JlemllckVkaXRvci5i
ZXppZXIgPSBiZXppZXI7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2dldFZhbHVl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21WYWx1ZU9wdGlvbkVsZW1lbnQu
c2VsZWN0ZWQgPyB0aGlzLmJlemllclZhbHVlIDogc3VwZXIuX2dldFZhbHVlKCk7CisgICAgfQor
CisgICAgX3NldFZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5iZXppZXJWYWx1ZSA9
IHZhbHVlOworICAgICAgICBpZiAodGhpcy52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkp
IHsKKyAgICAgICAgICAgIHN1cGVyLl9zZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICB0aGlz
Ll9iZXppZXJNYXJrZXJFbGVtZW50LmhpZGRlbiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBsZXQgYmV6aWVyID0gdGhpcy5iZXppZXJWYWx1ZTsKKyAg
ICAgICAgdGhpcy5fY3VzdG9tVmFsdWVPcHRpb25FbGVtZW50LnNlbGVjdGVkID0gISFiZXppZXI7
CisgICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVsZW1lbnQuaGlkZGVuID0gIWJlemllcjsKKyAg
ICAgICAgdGhpcy5zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuID0gISFi
ZXppZXI7CisgICAgICAgIGlmICghYmV6aWVyKQorICAgICAgICAgICAgc3VwZXIuX3NldFZhbHVl
KHZhbHVlKTsKKyAgICB9CisKKyAgICBfZ2VuZXJhdGVTeW50aGVzaXplZFZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21WYWx1ZU9wdGlvbkVsZW1lbnQuc2VsZWN0ZWQg
PyB0aGlzLmJlemllclZhbHVlIDogc3VwZXIuX2dlbmVyYXRlU3ludGhlc2l6ZWRWYWx1ZSgpOwor
ICAgIH0KKworICAgIF9iZXppZXJNYXJrZXJDbGlja2VkKCkKKyAgICB7CisgICAgICAgIGxldCBi
b3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fYmV6aWVy
TWFya2VyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIHRoaXMuX2N1
YmljQmV6aWVyRWRpdG9yUG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsK
KyAgICAgICAgdGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9i
ZXppZXJFZGl0b3IuZWxlbWVudDsKKyAgICAgICAgdGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3Bv
dmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWF0p
OworICAgIH0KKworICAgIF9oYW5kbGVLZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAgICBz
dXBlci5faGFuZGxlS2V5d29yZENoYW5nZWQoKTsKKyAgICAgICAgbGV0IGN1c3RvbU9wdGlvblNl
bGVjdGVkID0gdGhpcy5fY3VzdG9tVmFsdWVPcHRpb25FbGVtZW50LnNlbGVjdGVkOworICAgICAg
ICB0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50LmhpZGRlbiA9ICFjdXN0b21PcHRpb25TZWxlY3Rl
ZDsKKyAgICAgICAgdGhpcy5zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVu
ID0gISFjdXN0b21PcHRpb25TZWxlY3RlZDsKKyAgICAgICAgaWYgKGN1c3RvbU9wdGlvblNlbGVj
dGVkKQorICAgICAgICAgICAgdGhpcy5iZXppZXJWYWx1ZSA9ICJsaW5lYXIiOworICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVVSTElucHV0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43MWJhNWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcwpAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVVJMSW5wdXQgPSBj
bGFzcyBWaXN1YWxTdHlsZVVSTElucHV0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBs
YXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQs
IG51bGwsIG51bGwsICJ1cmwtaW5wdXQiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhp
cy5fdXJsSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAg
ICAgICAgdGhpcy5fdXJsSW5wdXRFbGVtZW50LnR5cGUgPSAidXJsIjsKKyAgICAgICAgdGhpcy5f
dXJsSW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbnRl
ciBhIFVSTCIpOworICAgICAgICB0aGlzLl91cmxJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5dXAiLCB0aGlzLl92YWx1ZURpZENoYW5nZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl91cmxJbnB1dEVsZW1lbnQpOworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl91cmxJbnB1dEVsZW1lbnQudmFsdWU7CisgICAgfQorCisgICAgc2V0IHZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID09PSB0aGlzLnZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VybElucHV0RWxlbWVudC52
YWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7
CisgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CisgICAgICAgIGlmICghdmFsdWUgfHwg
IXZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVy
biAidXJsKCIgKyB0aGlzLnZhbHVlICsgIikiOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAor
CisgICAgcGFyc2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9eKD86dXJsXChc
cyopKFteXCldKikoPzpccypcKVxzKjs/KSQvLmV4ZWModGV4dCk7CisgICAgfQorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlVW5pdFNsaWRlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjljNzEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuY3NzCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci51
bml0LXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnNs
aWRlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogNXB4IDFweCAwOwor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci51bml0LXNsaWRlciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnNsaWRlciA+IGltZyB7CisgICAg
dG9wOiAtMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci51bml0LXNs
aWRlci5vcGFjaXR5ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
c2xpZGVyIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGhz
bGEoMCwgMCUsIDAlLCAwKSwgIzAwMCksIHVybCguLi9JbWFnZXMvQ2hlY2tlcnMuc3ZnKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlVW5pdFNsaWRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zOGIyNWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmpzCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVVbml0U2xp
ZGVyID0gY2xhc3MgVmlzdWFsU3R5bGVVbml0U2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVz
LCBsYWJlbCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5h
bWVzLCBsYWJlbCwgbnVsbCwgbnVsbCwgInVuaXQtc2xpZGVyIiwgbGF5b3V0UmV2ZXJzZWQpOwor
CisgICAgICAgIHRoaXMuX3NsaWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2xpZGVyOworICAgICAg
ICB0aGlzLl9zbGlkZXIuZGVsZWdhdGUgPSB0aGlzOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3NsaWRlci5lbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBQ
dWJsaWMKKworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCBrbm9iWCA9
IHBhcnNlRmxvYXQodmFsdWUpOworICAgICAgICBpZiAoaXNOYU4oa25vYlgpKQorICAgICAgICAg
ICAga25vYlggPSBwYXJzZUZsb2F0KHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIpIHx8
IDA7CisKKyAgICAgICAgdGhpcy5fc2xpZGVyLmtub2JYID0ga25vYlg7CisgICAgfQorCisgICAg
Z2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMuX3NsaWRl
ci52YWx1ZSAqIDEwMCkgLyAxMDA7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAgfQorCisgICAgc2xpZGVy
VmFsdWVEaWRDaGFuZ2Uoc2xpZGVyLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVl
RGlkQ2hhbmdlKCk7CisgICAgfQorfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>