<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://pkp.sfu.ca/bugzilla/bugzilla.dtd">

<bugzilla version="4.2.5+"
          urlbase="http://pkp.sfu.ca/bugzilla/"
          
          maintainer="pkp-hosted@sfu.ca"
>

    <bug>
          <bug_id>6225</bug_id>
          
          <creation_ts>2010-11-19 10:50:00 -0800</creation_ts>
          <short_desc>PHP Fatal error when attempting to install locale</short_desc>
          <delta_ts>2010-11-19 14:42:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>OHS</product>
          <component>General</component>
          <version>2.3.2</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James MacGregor">jmacgreg</reporter>
          <assigned_to name="Alec Smecher">alec</assigned_to>
          <cc>pkp-support</cc>
          <cf_reportedversion>2.3.1</cf_reportedversion>
          

      

      

      

          <long_desc isprivate="0">
            <commentid>22221</commentid>
            <who name="James MacGregor">jmacgreg</who>
            <bug_when>2010-11-19 10:50:00 -0800</bug_when>
            <thetext>Nicolas is translating the Harvester into fr_FR (see http://pkp.sfu.ca/support/forum/viewtopic.php?f=4&amp;t=6836&amp;p=26526#p26526). After I add the files to the system and attempt to install the locale from the Site Admin -&gt; Languages page, I get the following PHP error (and the locale is not installed):

PHP Fatal error:  Call to undefined method EmailTemplateDAO::installEmailTemplateData() in /Users/jmacgreg/git/harvester/lib/pkp/classes/i18n/PKPLocale.inc.php on line 297, referer: http://git/harvester/index.php/admin/languages

At first I thought that converting the email_templates_data.xml file into an emailTemplates.xml file using the xslt script Alec provided a while ago might solve the issue, but it doesn&apos;t. (The en_US locale hasn&apos;t moved to an emailTemplates.xml file either.) I can&apos;t seem to find anything on the forum in Bugzilla related to this; I suspect it&apos;s just that the Harvester isn&apos;t as up-to-date as the other apps.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>22227</commentid>
              <attachid>3344</attachid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2010-11-19 13:29:34 -0800</bug_when>
            <thetext>Created attachment 3344
Patch against Harvester 2.3.1

Please try the attached patch against OHS 2.3.1. It may be necessary to reload the languages on the administrator&apos;s languages page.

Note that this changes the way email templates are stored; you&apos;ll need to convert dbscripts/xml/data/locale/fr_FR/email_templates_data.xml to a new format and store the result in locale/fr_CA/emailTemplates.xml -- you can generate the new format by passing the old file through the XSL file at http://pkp.sfu.ca/bugzilla/attachment.cgi?id=2200 (see bug #4153).

This is new code, and only briefly tested, so please report your results back and I can help debug further if needed.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>22228</commentid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2010-11-19 13:30:03 -0800</bug_when>
            <thetext>(NOT COMMITTED until we get feedback -- leaving open until then.)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>22230</commentid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2010-11-19 14:42:07 -0800</bug_when>
            <thetext>(Never mind comment #2 -- committed to git. Waiting for feedback anyway.)</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3344</attachid>
            <date>2010-11-19 13:29:00 -0800</date>
            <delta_ts>2010-11-19 13:29:34 -0800</delta_ts>
            <desc>Patch against Harvester 2.3.1</desc>
            <filename>6225.diff</filename>
            <type>text/plain</type>
            <size>36634</size>
            <attacher>alec</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NsYXNzZXMvaW5zdGFsbC9JbnN0YWxsLmluYy5waHAgYi9jbGFzc2VzL2lu
c3RhbGwvSW5zdGFsbC5pbmMucGhwCmluZGV4IGYyYWM4ZWEuLjIwNzI1M2UgMTAwNjQ0Ci0tLSBh
L2NsYXNzZXMvaW5zdGFsbC9JbnN0YWxsLmluYy5waHAKKysrIGIvY2xhc3Nlcy9pbnN0YWxsL0lu
c3RhbGwuaW5jLnBocApAQCAtNjUsNiArNjUsMTIgQEAgY2xhc3MgSW5zdGFsbCBleHRlbmRzIFBL
UEluc3RhbGwgewogCQkJJHRoaXMtPmV4ZWN1dGVTUUwoc3ByaW50ZignSU5TRVJUIElOVE8gdXNl
cnMgKHVzZXJfaWQsIHVzZXJuYW1lLCBmaXJzdF9uYW1lLCBsYXN0X25hbWUsIHBhc3N3b3JkLCBl
bWFpbCwgZGF0ZV9yZWdpc3RlcmVkLCBkYXRlX2xhc3RfbG9naW4pIFZBTFVFUyAoJWQsIFwnJXNc
JywgXCclc1wnLCBcJyVzXCcsIFwnJXNcJywgXCclc1wnLCBcJyVzXCcsIFwnJXNcJyknLCAxLCAk
dGhpcy0+Z2V0UGFyYW0oJ2FkbWluVXNlcm5hbWUnKSwgJHRoaXMtPmdldFBhcmFtKCdhZG1pblVz
ZXJuYW1lJyksICR0aGlzLT5nZXRQYXJhbSgnYWRtaW5Vc2VybmFtZScpLCBWYWxpZGF0aW9uOjpl
bmNyeXB0Q3JlZGVudGlhbHMoJHRoaXMtPmdldFBhcmFtKCdhZG1pblVzZXJuYW1lJyksICR0aGlz
LT5nZXRQYXJhbSgnYWRtaW5QYXNzd29yZCcpLCAkdGhpcy0+Z2V0UGFyYW0oJ2VuY3J5cHRpb24n
KSksICR0aGlzLT5nZXRQYXJhbSgnYWRtaW5FbWFpbCcpLCBDb3JlOjpnZXRDdXJyZW50RGF0ZSgp
LCBDb3JlOjpnZXRDdXJyZW50RGF0ZSgpKSk7CiAJCQkkdGhpcy0+ZXhlY3V0ZVNRTChzcHJpbnRm
KCdJTlNFUlQgSU5UTyByb2xlcyAodXNlcl9pZCwgcm9sZV9pZCkgVkFMVUVTICglZCwgJWQpJywg
MCwgMSwgUk9MRV9JRF9TSVRFX0FETUlOKSk7CiAKKwkJCS8vIEluc3RhbGwgZW1haWwgdGVtcGxh
dGUgbGlzdCBhbmQgZGF0YSBmb3IgZWFjaCBsb2NhbGUKKwkJCSRlbWFpbFRlbXBsYXRlRGFvID0m
IERBT1JlZ2lzdHJ5OjpnZXREQU8oJ0VtYWlsVGVtcGxhdGVEQU8nKTsKKwkJCSR0aGlzLT5leGVj
dXRlU1FMKCRlbWFpbFRlbXBsYXRlRGFvLT5pbnN0YWxsRW1haWxUZW1wbGF0ZXMoJGVtYWlsVGVt
cGxhdGVEYW8tPmdldE1haW5FbWFpbFRlbXBsYXRlc0ZpbGVuYW1lKCksIHRydWUpKTsKKwkJCWZv
cmVhY2ggKCR0aGlzLT5pbnN0YWxsZWRMb2NhbGVzIGFzICRsb2NhbGUpIHsKKwkJCQkkdGhpcy0+
ZXhlY3V0ZVNRTCgkZW1haWxUZW1wbGF0ZURhby0+aW5zdGFsbEVtYWlsVGVtcGxhdGVEYXRhKCRl
bWFpbFRlbXBsYXRlRGFvLT5nZXRNYWluRW1haWxUZW1wbGF0ZURhdGFGaWxlbmFtZSgkbG9jYWxl
KSwgdHJ1ZSkpOworCQkJfQogCQl9IGVsc2UgewogCQkJLy8gQWRkIGluaXRpYWwgc2l0ZSBkYXRh
CiAJCQkkbG9jYWxlID0gJHRoaXMtPmdldFBhcmFtKCdsb2NhbGUnKTsKQEAgLTgwLDYgKzg2LDEz
IEBAIGNsYXNzIEluc3RhbGwgZXh0ZW5kcyBQS1BJbnN0YWxsIHsKIAkJCQlyZXR1cm4gZmFsc2U7
CiAJCQl9CiAKKwkJCS8vIEluc3RhbGwgZW1haWwgdGVtcGxhdGUgbGlzdCBhbmQgZGF0YSBmb3Ig
ZWFjaCBsb2NhbGUKKwkJCSRlbWFpbFRlbXBsYXRlRGFvID0mIERBT1JlZ2lzdHJ5OjpnZXREQU8o
J0VtYWlsVGVtcGxhdGVEQU8nKTsKKwkJCSRlbWFpbFRlbXBsYXRlRGFvLT5pbnN0YWxsRW1haWxU
ZW1wbGF0ZXMoJGVtYWlsVGVtcGxhdGVEYW8tPmdldE1haW5FbWFpbFRlbXBsYXRlc0ZpbGVuYW1l
KCkpOworCQkJZm9yZWFjaCAoJHRoaXMtPmluc3RhbGxlZExvY2FsZXMgYXMgJGxvY2FsZSkgewor
CQkJCSRlbWFpbFRlbXBsYXRlRGFvLT5pbnN0YWxsRW1haWxUZW1wbGF0ZURhdGEoJGVtYWlsVGVt
cGxhdGVEYW8tPmdldE1haW5FbWFpbFRlbXBsYXRlRGF0YUZpbGVuYW1lKCRsb2NhbGUpKTsKKwkJ
CX0KKwogCQkJLy8gSW5zdGFsbCBzaXRlIHNldHRpbmdzCiAJCQkkc2l0ZVNldHRpbmdzRGFvID0m
IERBT1JlZ2lzdHJ5OjpnZXREQU8oJ1NpdGVTZXR0aW5nc0RBTycpOwogCQkJJHNpdGVTZXR0aW5n
c0Rhby0+aW5zdGFsbFNldHRpbmdzKCdyZWdpc3RyeS9zaXRlU2V0dGluZ3MueG1sJywgYXJyYXko
CmRpZmYgLS1naXQgYS9jbGFzc2VzL21haWwvRW1haWxUZW1wbGF0ZS5pbmMucGhwIGIvY2xhc3Nl
cy9tYWlsL0VtYWlsVGVtcGxhdGUuaW5jLnBocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDM3MWNjMi4uMDAwMDAwMAotLS0gYS9jbGFzc2VzL21haWwvRW1haWxUZW1wbGF0ZS5pbmMu
cGhwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLTw/cGhwCi0KLS8qKgotICogQGZp
bGUgRW1haWxUZW1wbGF0ZS5pbmMucGhwCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMTAg
QWxlYyBTbWVjaGVyIGFuZCBKb2huIFdpbGxpbnNreQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IEdOVSBHUEwgdjIuIEZvciBmdWxsIHRlcm1zIHNlZSB0aGUgZmlsZSBkb2NzL0NPUFlJTkcuCi0g
KgotICogQmFzZUVtYWlsVGVtcGxhdGUsIEVtYWlsVGVtcGxhdGUgY2xhc3NlcyBpbXBsZW1lbnRl
ZCBoZXJlOyB0aGVzZQotICogZGVzY3JpYmUgYmFzaWMgZW1haWwgdGVtcGxhdGUgcHJvcGVydGll
cy4KLSAqCi0gKiBAcGFja2FnZSBtYWlsCi0gKgotICogJElkJAotICovCi0KLS8qKgotICogRW1h
aWwgdGVtcGxhdGUgYmFzZSBjbGFzcy4KLSAqLwotY2xhc3MgQmFzZUVtYWlsVGVtcGxhdGUgZXh0
ZW5kcyBEYXRhT2JqZWN0IHsKLQotCS8qKgotCSAqIENvbnN0cnVjdG9yLgotCSAqLwotCWZ1bmN0
aW9uIEJhc2VFbWFpbFRlbXBsYXRlKCkgewotCQlwYXJlbnQ6OkRhdGFPYmplY3QoKTsKLQl9Ci0K
LQkvLwotCS8vIEdldC9zZXQgbWV0aG9kcwotCS8vCi0KLQkvKioKLQkgKiBHZXQgSUQgb2YgZW1h
aWwgdGVtcGxhdGUuCi0JICogQHJldHVybiBpbnQKLQkgKi8KLQlmdW5jdGlvbiBnZXRFbWFpbElk
KCkgewotCQlyZXR1cm4gJHRoaXMtPmdldERhdGEoJ2VtYWlsSWQnKTsKLQl9Ci0KLQkvKioKLQkg
KiBTZXQgSUQgb2YgZW1haWwgdGVtcGxhdGUuCi0JICogQHBhcmFtICRlbWFpbElkIGludAotCSAq
LwotCWZ1bmN0aW9uIHNldEVtYWlsSWQoJGVtYWlsSWQpIHsKLQkJcmV0dXJuICR0aGlzLT5zZXRE
YXRhKCdlbWFpbElkJywgJGVtYWlsSWQpOwotCX0KLQotCS8qKgotCSAqIEdldCBrZXkgb2YgZW1h
aWwgdGVtcGxhdGUuCi0JICogQHJldHVybiBzdHJpbmcKLQkgKi8KLQlmdW5jdGlvbiBnZXRFbWFp
bEtleSgpIHsKLQkJcmV0dXJuICR0aGlzLT5nZXREYXRhKCdlbWFpbEtleScpOwotCX0KLQotCS8q
KgotCSAqIFNldCBrZXkgb2YgZW1haWwgdGVtcGxhdGUuCi0JICogQHBhcmFtICRlbWFpbEtleSBz
dHJpbmcKLQkgKi8KLQlmdW5jdGlvbiBzZXRFbWFpbEtleSgkZW1haWxLZXkpIHsKLQkJcmV0dXJu
ICR0aGlzLT5zZXREYXRhKCdlbWFpbEtleScsICRlbWFpbEtleSk7Ci0JfQotCi0JLyoqCi0JICog
R2V0IHRoZSBlbmFibGVkIHNldHRpbmcgb2YgZW1haWwgdGVtcGxhdGUuCi0JICogQHJldHVybiBi
b29sZWFuCi0JICovCi0JZnVuY3Rpb24gZ2V0RW5hYmxlZCgpIHsKLQkJcmV0dXJuICR0aGlzLT5n
ZXREYXRhKCdlbmFibGVkJyk7Ci0JfQotCi0JLyoqCi0JICogU2V0IHRoZSBlbmFibGVkIHNldHRp
bmcgb2YgZW1haWwgdGVtcGxhdGUuCi0JICogQHBhcmFtICRlbmFibGVkIGJvb2xlYW4KLQkgKi8K
LQlmdW5jdGlvbiBzZXRFbmFibGVkKCRlbmFibGVkKSB7Ci0JCXJldHVybiAkdGhpcy0+c2V0RGF0
YSgnZW5hYmxlZCcsICRlbmFibGVkKTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVjayBpZiBlbWFpbCB0
ZW1wbGF0ZSBpcyBhbGxvd2VkIHRvIGJlIGRpc2FibGVkLgotCSAqIEByZXR1cm4gYm9vbGVhbgot
CSAqLwotCWZ1bmN0aW9uIGdldENhbkRpc2FibGUoKSB7Ci0JCXJldHVybiAkdGhpcy0+Z2V0RGF0
YSgnY2FuRGlzYWJsZScpOwotCX0KLQotCS8qKgotCSAqIFNldCB3aGV0aGVyIG9yIG5vdCBlbWFp
bCB0ZW1wbGF0ZSBpcyBhbGxvd2VkIHRvIGJlIGRpc2FibGVkLgotCSAqIEBwYXJhbSAkY2FuRGlz
YWJsZSBib29sZWFuCi0JICovCi0JZnVuY3Rpb24gc2V0Q2FuRGlzYWJsZSgkY2FuRGlzYWJsZSkg
ewotCQlyZXR1cm4gJHRoaXMtPnNldERhdGEoJ2NhbkRpc2FibGUnLCAkY2FuRGlzYWJsZSk7Ci0J
fQotCi19Ci0KLQotLyoqCi0gKiBFbWFpbCB0ZW1wbGF0ZSB3aXRoIGRhdGEgZm9yIGFsbCBzdXBw
b3J0ZWQgbG9jYWxlcy4KLSAqLwotY2xhc3MgRW1haWxUZW1wbGF0ZSBleHRlbmRzIEJhc2VFbWFp
bFRlbXBsYXRlIHsKLQotCS8qKiBAdmFyICRsb2NhbGVEYXRhIGFycmF5IG9mIGxvY2FsaXplZCBl
bWFpbCB0ZW1wbGF0ZSBkYXRhICovCi0JdmFyICRsb2NhbGVEYXRhOwotCi0JLyoqCi0JICogQ29u
c3RydWN0b3IuCi0JICovCi0JZnVuY3Rpb24gRW1haWxUZW1wbGF0ZSgpIHsKLQkJcGFyZW50OjpC
YXNlRW1haWxUZW1wbGF0ZSgpOwotCQkkdGhpcy0+bG9jYWxlRGF0YSA9IGFycmF5KCk7Ci0JfQot
Ci0JLyoqCi0JICogQWRkIGEgbmV3IGxvY2FsZSB0byBzdG9yZSBkYXRhIGZvci4KLQkgKiBAcGFy
YW0gJGxvY2FsZSBzdHJpbmcKLQkgKi8KLQlmdW5jdGlvbiBhZGRMb2NhbGUoJGxvY2FsZSkgewot
CQkkdGhpcy0+bG9jYWxlRGF0YVskbG9jYWxlXSA9IGFycmF5KCk7Ci0JfQotCi0JLyoqCi0JICog
R2V0IHNldCBvZiBzdXBwb3J0ZWQgbG9jYWxlcyBmb3IgdGhpcyB0ZW1wbGF0ZS4KLQkgKiBAcmV0
dXJuIGFycmF5Ci0JICovCi0JZnVuY3Rpb24gZ2V0TG9jYWxlcygpIHsKLQkJcmV0dXJuIGFycmF5
X2tleXMoJHRoaXMtPmxvY2FsZURhdGEpOwotCX0KLQotCS8vCi0JLy8gR2V0L3NldCBtZXRob2Rz
Ci0JLy8KLQotCS8qKgotCSAqIEdldCBkZXNjcmlwdGlvbiBvZiBlbWFpbCB0ZW1wbGF0ZS4KLQkg
KiBAcGFyYW0gJGxvY2FsZSBzdHJpbmcKLQkgKiBAcmV0dXJuIHN0cmluZwotCSAqLwotCWZ1bmN0
aW9uIGdldERlc2NyaXB0aW9uKCRsb2NhbGUpIHsKLQkJcmV0dXJuIGlzc2V0KCR0aGlzLT5sb2Nh
bGVEYXRhWyRsb2NhbGVdWydkZXNjcmlwdGlvbiddKSA/ICR0aGlzLT5sb2NhbGVEYXRhWyRsb2Nh
bGVdWydkZXNjcmlwdGlvbiddIDogJyc7Ci0JfQotCi0JLyoqCi0JICogU2V0IGRlc2NyaXB0aW9u
IG9mIGVtYWlsIHRlbXBsYXRlLgotCSAqIEBwYXJhbSAkbG9jYWxlIHN0cmluZwotCSAqIEBwYXJh
bSAkZGVzY3JpcHRpb24gc3RyaW5nCi0JICovCi0JZnVuY3Rpb24gc2V0RGVzY3JpcHRpb24oJGxv
Y2FsZSwgJGRlc2NyaXB0aW9uKSB7Ci0JCSR0aGlzLT5sb2NhbGVEYXRhWyRsb2NhbGVdWydkZXNj
cmlwdGlvbiddID0gJGRlc2NyaXB0aW9uOwotCX0KLQotCS8qKgotCSAqIEdldCBzdWJqZWN0IG9m
IGVtYWlsIHRlbXBsYXRlLgotCSAqIEBwYXJhbSAkbG9jYWxlIHN0cmluZwotCSAqIEByZXR1cm4g
c3RyaW5nCi0JICovCi0JZnVuY3Rpb24gZ2V0U3ViamVjdCgkbG9jYWxlID0gbnVsbCkgewotCQlp
ZiAoJGxvY2FsZSA9PT0gbnVsbCkgJGxvY2FsZSA9IExvY2FsZTo6Z2V0TG9jYWxlKCk7Ci0JCXJl
dHVybiBpc3NldCgkdGhpcy0+bG9jYWxlRGF0YVskbG9jYWxlXVsnc3ViamVjdCddKSA/ICR0aGlz
LT5sb2NhbGVEYXRhWyRsb2NhbGVdWydzdWJqZWN0J10gOiAnJzsKLQl9Ci0KLQkvKioKLQkgKiBT
ZXQgc3ViamVjdCBvZiBlbWFpbCB0ZW1wbGF0ZS4KLQkgKiBAcGFyYW0gJGxvY2FsZSBzdHJpbmcK
LQkgKiBAcGFyYW0gJHN1YmplY3Qgc3RyaW5nCi0JICovCi0JZnVuY3Rpb24gc2V0U3ViamVjdCgk
bG9jYWxlLCAkc3ViamVjdCkgewotCQkkdGhpcy0+bG9jYWxlRGF0YVskbG9jYWxlXVsnc3ViamVj
dCddID0gJHN1YmplY3Q7Ci0JfQotCi0JLyoqCi0JICogR2V0IGJvZHkgb2YgZW1haWwgdGVtcGxh
dGUuCi0JICogQHBhcmFtICRsb2NhbGUgc3RyaW5nCi0JICogQHJldHVybiBzdHJpbmcKLQkgKi8K
LQlmdW5jdGlvbiBnZXRCb2R5KCRsb2NhbGUgPSBudWxsKSB7Ci0JCWlmICgkbG9jYWxlID09PSBu
dWxsKSAkbG9jYWxlID0gTG9jYWxlOjpnZXRMb2NhbGUoKTsKLQkJcmV0dXJuIGlzc2V0KCR0aGlz
LT5sb2NhbGVEYXRhWyRsb2NhbGVdWydib2R5J10pID8gJHRoaXMtPmxvY2FsZURhdGFbJGxvY2Fs
ZV1bJ2JvZHknXSA6ICcnOwotCX0KLQotCS8qKgotCSAqIFNldCBib2R5IG9mIGVtYWlsIHRlbXBs
YXRlLgotCSAqIEBwYXJhbSAkbG9jYWxlIHN0cmluZwotCSAqIEBwYXJhbSAkYm9keSBzdHJpbmcK
LQkgKi8KLQlmdW5jdGlvbiBzZXRCb2R5KCRsb2NhbGUsICRib2R5KSB7Ci0JCSR0aGlzLT5sb2Nh
bGVEYXRhWyRsb2NhbGVdWydib2R5J10gPSAkYm9keTsKLQl9Ci19Ci0KLT8+CmRpZmYgLS1naXQg
YS9jbGFzc2VzL21haWwvRW1haWxUZW1wbGF0ZURBTy5pbmMucGhwIGIvY2xhc3Nlcy9tYWlsL0Vt
YWlsVGVtcGxhdGVEQU8uaW5jLnBocAppbmRleCAxNGRjMDU5Li43YzY1YWEyIDEwMDY0NAotLS0g
YS9jbGFzc2VzL21haWwvRW1haWxUZW1wbGF0ZURBTy5pbmMucGhwCisrKyBiL2NsYXNzZXMvbWFp
bC9FbWFpbFRlbXBsYXRlREFPLmluYy5waHAKQEAgLTEsMTY3ICsxLDU0IEBACiA8P3BocAogCiAv
KioKLSAqIEBmaWxlIEVtYWlsVGVtcGxhdGVEQU8uaW5jLnBocAorICogQGZpbGUgY2xhc3Nlcy9t
YWlsL0VtYWlsVGVtcGxhdGVEQU8uaW5jLnBocAogICoKICAqIENvcHlyaWdodCAoYykgMjAwNS0y
MDEwIEFsZWMgU21lY2hlciBhbmQgSm9obiBXaWxsaW5za3kKICAqIERpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBHTlUgR1BMIHYyLiBGb3IgZnVsbCB0ZXJtcyBzZWUgdGhlIGZpbGUgZG9jcy9DT1BZSU5H
LgogICoKLSAqIEBwYWNrYWdlIG1haWwKICAqIEBjbGFzcyBFbWFpbFRlbXBsYXRlREFPCisgKiBA
aW5ncm91cCBtYWlsCisgKiBAc2VlIEVtYWlsVGVtcGxhdGUKICAqCi0gKiBDbGFzcyBmb3IgRW1h
aWwgVGVtcGxhdGUgREFPLgotICogT3BlcmF0aW9ucyBmb3IgcmV0cmlldmluZyBhbmQgbW9kaWZ5
aW5nIEVtYWlsIFRlbXBsYXRlIG9iamVjdHMuCi0gKgotICogJElkJAorICogQGJyaWVmIE9wZXJh
dGlvbnMgZm9yIHJldHJpZXZpbmcgYW5kIG1vZGlmeWluZyBFbWFpbCBUZW1wbGF0ZSBvYmplY3Rz
LgogICovCiAKLWltcG9ydCgnY2xhc3Nlcy5tYWlsLkVtYWlsVGVtcGxhdGUnKTsKKy8vICRJZCQK
IAotY2xhc3MgRW1haWxUZW1wbGF0ZURBTyBleHRlbmRzIERBTyB7CiAKLQkvKioKLQkgKiBDb25z
dHJ1Y3Rvci4KLQkgKi8KLQlmdW5jdGlvbiBFbWFpbFRlbXBsYXRlREFPKCkgewotCQlwYXJlbnQ6
OkRBTygpOwotCX0KK2ltcG9ydCgnbGliLnBrcC5jbGFzc2VzLm1haWwuUEtQRW1haWxUZW1wbGF0
ZURBTycpOworaW1wb3J0KCdsaWIucGtwLmNsYXNzZXMubWFpbC5FbWFpbFRlbXBsYXRlJyk7CiAK
K2NsYXNzIEVtYWlsVGVtcGxhdGVEQU8gZXh0ZW5kcyBQS1BFbWFpbFRlbXBsYXRlREFPIHsKIAkv
KioKIAkgKiBSZXRyaWV2ZSBhIGJhc2UgZW1haWwgdGVtcGxhdGUgYnkga2V5LgogCSAqIEBwYXJh
bSAkZW1haWxLZXkgc3RyaW5nCiAJICogQHJldHVybiBCYXNlRW1haWxUZW1wbGF0ZQogCSAqLwot
CWZ1bmN0aW9uICZnZXRFbWFpbFRlbXBsYXRlKCRlbWFpbEtleSkgewotCQkkcmVzdWx0ID0mICR0
aGlzLT5yZXRyaWV2ZSgKLQkJCSdTRUxFQ1QgZC5lbWFpbF9rZXksIGQuY2FuX2VkaXQsIGQuY2Fu
X2Rpc2FibGUsIGQuZW5hYmxlZAotCQkJRlJPTSBlbWFpbF90ZW1wbGF0ZXMgQVMgZAotCQkJV0hF
UkUgZC5lbWFpbF9rZXkgPSA/JywKLQkJCSRlbWFpbEtleQotCQkpOwotCi0JCSRyZXR1cm5lciA9
IG51bGw7Ci0JCWlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpICE9IDApIHsKLQkJCSRyZXR1cm5l
ciA9JiAkdGhpcy0+X3JldHVybkVtYWlsVGVtcGxhdGVGcm9tUm93KCRyZXN1bHQtPkdldFJvd0Fz
c29jKGZhbHNlKSk7Ci0JCX0KLQotCQkkcmVzdWx0LT5DbG9zZSgpOwotCQl1bnNldCgkcmVzdWx0
KTsKLQorCWZ1bmN0aW9uICZnZXRCYXNlRW1haWxUZW1wbGF0ZSgkZW1haWxLZXkpIHsKKwkJJHJl
dHVybmVyID0mIHBhcmVudDo6Z2V0QmFzZUVtYWlsVGVtcGxhdGUoJGVtYWlsS2V5LCAwLCAwKTsK
IAkJcmV0dXJuICRyZXR1cm5lcjsKIAl9CiAKIAkvKioKLQkgKiBJbnRlcm5hbCBmdW5jdGlvbiB0
byByZXR1cm4gYW4gZW1haWwgdGVtcGxhdGUgb2JqZWN0IGZyb20gYSByb3cuCi0JICogQHBhcmFt
ICRyb3cgYXJyYXkKLQkgKiBAcmV0dXJuIEVtYWlsVGVtcGxhdGUKLQkgKi8KLQlmdW5jdGlvbiAm
X3JldHVybkVtYWlsVGVtcGxhdGVGcm9tUm93KCYkcm93KSB7Ci0JCSRlbWFpbFRlbXBsYXRlID0g
bmV3IEVtYWlsVGVtcGxhdGUoKTsKLQkJJGVtYWlsVGVtcGxhdGUtPnNldEVtYWlsS2V5KCRyb3db
J2VtYWlsX2tleSddKTsKLQkJJGVtYWlsVGVtcGxhdGUtPnNldEVuYWJsZWQoJHJvd1snZW5hYmxl
ZCddKTsKLQkJJGVtYWlsVGVtcGxhdGUtPnNldENhbkRpc2FibGUoJHJvd1snY2FuX2Rpc2FibGUn
XSk7Ci0KLQkJaWYgKCFIb29rUmVnaXN0cnk6OmNhbGwoJ0VtYWlsVGVtcGxhdGVEQU86Ol9yZXR1
cm5FbWFpbFRlbXBsYXRlRnJvbVJvdycsIGFycmF5KCYkZW1haWxUZW1wbGF0ZSwgJiRyb3cpKSkg
ewotCQkJJHJlc3VsdCA9JiAkdGhpcy0+cmV0cmlldmUoCi0JCQkJJ1NFTEVDVCBkLmxvY2FsZSwg
ZC5kZXNjcmlwdGlvbiwgZC5zdWJqZWN0LCBkLmJvZHkKLQkJCQlGUk9NIGVtYWlsX3RlbXBsYXRl
c19kYXRhIEFTIGQKLQkJCQlXSEVSRSBkLmVtYWlsX2tleSA9ID8nLAotCQkJCSRyb3dbJ2VtYWls
X2tleSddCi0JCQkpOwotCi0JCQl3aGlsZSAoISRyZXN1bHQtPkVPRikgewotCQkJCSRkYXRhUm93
ID0mICRyZXN1bHQtPkdldFJvd0Fzc29jKGZhbHNlKTsKLQkJCQkkZW1haWxUZW1wbGF0ZS0+YWRk
TG9jYWxlKCRkYXRhUm93Wydsb2NhbGUnXSk7Ci0JCQkJJGVtYWlsVGVtcGxhdGUtPnNldFN1Ympl
Y3QoJGRhdGFSb3dbJ2xvY2FsZSddLCAkZGF0YVJvd1snc3ViamVjdCddKTsKLQkJCQkkZW1haWxU
ZW1wbGF0ZS0+c2V0Qm9keSgkZGF0YVJvd1snbG9jYWxlJ10sICRkYXRhUm93Wydib2R5J10pOwot
CQkJCSRlbWFpbFRlbXBsYXRlLT5zZXREZXNjcmlwdGlvbigkZGF0YVJvd1snbG9jYWxlJ10sICRk
YXRhUm93WydkZXNjcmlwdGlvbiddKTsKLQkJCQkkcmVzdWx0LT5Nb3ZlTmV4dCgpOwotCQkJfQot
CQkJJHJlc3VsdC0+Q2xvc2UoKTsKLQkJCXVuc2V0KCRyZXN1bHQpOwotCQl9Ci0KLQkJcmV0dXJu
ICRlbWFpbFRlbXBsYXRlOwotCX0KLQotCS8qKgotCSAqIEluc2VydCBhIG5ldyBiYXNlIGVtYWls
IHRlbXBsYXRlLgotCSAqIEBwYXJhbSAkZW1haWxUZW1wbGF0ZSBCYXNlRW1haWxUZW1wbGF0ZQot
CSAqLwkKLQlmdW5jdGlvbiBpbnNlcnRCYXNlRW1haWxUZW1wbGF0ZSgmJGVtYWlsVGVtcGxhdGUp
IHsKLQkJcmV0dXJuICR0aGlzLT51cGRhdGUoCi0JCQknSU5TRVJUIElOVE8gZW1haWxfdGVtcGxh
dGVzCi0JCQkJKGVtYWlsX2tleSwgZW5hYmxlZCkKLQkJCQlWQUxVRVMKLQkJCQkoPywgPyknLAot
CQkJYXJyYXkoCi0JCQkJJGVtYWlsVGVtcGxhdGUtPmdldEVtYWlsS2V5KCksCi0JCQkJJGVtYWls
VGVtcGxhdGUtPmdldEVuYWJsZWQoKSA9PSBudWxsID8gMCA6IDEKLQkJCSkKLQkJKTsKLQkJJGVt
YWlsVGVtcGxhdGUtPnNldEVtYWlsSWQoJHRoaXMtPmdldEluc2VydEVtYWlsSWQoKSk7Ci0JCXJl
dHVybiAkZW1haWxUZW1wbGF0ZS0+Z2V0RW1haWxJZCgpOwotCX0KLQotCS8qKgotCSAqIFVwZGF0
ZSBhbiBleGlzdGluZyBiYXNlIGVtYWlsIHRlbXBsYXRlLgotCSAqIEBwYXJhbSAkZW1haWxUZW1w
bGF0ZSBCYXNlRW1haWxUZW1wbGF0ZQorCSAqIFJldHJpZXZlIGxvY2FsaXplZCBlbWFpbCB0ZW1w
bGF0ZSBieSBrZXkuCisJICogQHBhcmFtICRlbWFpbEtleSBzdHJpbmcKKwkgKiBAcmV0dXJuIExv
Y2FsZUVtYWlsVGVtcGxhdGUKIAkgKi8KLQlmdW5jdGlvbiB1cGRhdGVCYXNlRW1haWxUZW1wbGF0
ZSgmJGVtYWlsVGVtcGxhdGUpIHsKLQkJcmV0dXJuICR0aGlzLT51cGRhdGUoCi0JCQknVVBEQVRF
IGVtYWlsX3RlbXBsYXRlcwotCQkJCVNFVAllbmFibGVkID0gPwotCQkJCVdIRVJFIGVtYWlsX2tl
eSA9ID8nLAotCQkJYXJyYXkoCi0JCQkJJGVtYWlsVGVtcGxhdGUtPmdldEVuYWJsZWQoKSA9PSBu
dWxsID8gMCA6IDEsCi0JCQkJJGVtYWlsVGVtcGxhdGUtPmdldEVtYWlsS2V5KCkKLQkJCSkKLQkJ
KTsKLQl9Ci0KLQkvKioKLQkgKiBJbnNlcnQgYSBuZXcgbG9jYWxpemVkIGVtYWlsIHRlbXBsYXRl
LgotCSAqIEBwYXJhbSAkZW1haWxUZW1wbGF0ZSBFbWFpbFRlbXBsYXRlCi0JICovCQotCWZ1bmN0
aW9uIGluc2VydEVtYWlsVGVtcGxhdGUoJiRlbWFpbFRlbXBsYXRlKSB7Ci0JCSR0aGlzLT5pbnNl
cnRCYXNlRW1haWxUZW1wbGF0ZSgkZW1haWxUZW1wbGF0ZSk7Ci0JCXJldHVybiAkdGhpcy0+dXBk
YXRlRW1haWxUZW1wbGF0ZURhdGEoJGVtYWlsVGVtcGxhdGUpOworCWZ1bmN0aW9uICZnZXRMb2Nh
bGVFbWFpbFRlbXBsYXRlKCRlbWFpbEtleSkgeworCQkkcmV0dXJuZXIgPSYgcGFyZW50OjpnZXRM
b2NhbGVFbWFpbFRlbXBsYXRlKCRlbWFpbEtleSwgMCwgMCk7CisJCXJldHVybiAkcmV0dXJuZXI7
CiAJfQogCiAJLyoqCi0JICogSW5zZXJ0L3VwZGF0ZSBsb2NhbGUtc3BlY2lmaWMgZW1haWwgdGVt
cGxhdGUgZGF0YS4KLQkgKiBAcGFyYW0gJGVtYWlsVGVtcGxhdGUgTG9jYWxlRW1haWxUZW1wbGF0
ZQorCSAqIFJldHJpZXZlIGFuIGVtYWlsIHRlbXBsYXRlIGJ5IGtleS4KKwkgKiBAcGFyYW0gJGVt
YWlsS2V5IHN0cmluZworCSAqIEBwYXJhbSAkbG9jYWxlIHN0cmluZworCSAqIEByZXR1cm4gRW1h
aWxUZW1wbGF0ZQogCSAqLwotCWZ1bmN0aW9uIHVwZGF0ZUVtYWlsVGVtcGxhdGVEYXRhKCYkZW1h
aWxUZW1wbGF0ZSkgewotCQlmb3JlYWNoICgkZW1haWxUZW1wbGF0ZS0+Z2V0TG9jYWxlcygpIGFz
ICRsb2NhbGUpIHsKLQkJCSRyZXN1bHQgPSYgJHRoaXMtPnJldHJpZXZlKAotCQkJCSdTRUxFQ1Qg
Q09VTlQoKikgRlJPTSBlbWFpbF90ZW1wbGF0ZXNfZGF0YQotCQkJCVdIRVJFIGVtYWlsX2tleSA9
ID8gQU5EIGxvY2FsZSA9ID8nLAotCQkJCWFycmF5KCRlbWFpbFRlbXBsYXRlLT5nZXRFbWFpbEtl
eSgpLCAkbG9jYWxlKQotCQkJKTsKLQotCQkJaWYgKCRyZXN1bHQtPmZpZWxkc1swXSA9PSAwKSB7
Ci0JCQkJJHRoaXMtPnVwZGF0ZSgKLQkJCQkJJ0lOU0VSVCBJTlRPIGVtYWlsX3RlbXBsYXRlc19k
YXRhCi0JCQkJCShlbWFpbF9rZXksIGxvY2FsZSwgc3ViamVjdCwgYm9keSkKLQkJCQkJVkFMVUVT
Ci0JCQkJCSg/LCA/LCA/LCA/KScsCi0JCQkJCWFycmF5KCRlbWFpbFRlbXBsYXRlLT5nZXRFbWFp
bEtleSgpLCAkbG9jYWxlLCAkZW1haWxUZW1wbGF0ZS0+Z2V0U3ViamVjdCgkbG9jYWxlKSwgJGVt
YWlsVGVtcGxhdGUtPmdldEJvZHkoJGxvY2FsZSkpCi0JCQkJKTsKLQotCQkJfSBlbHNlIHsKLQkJ
CQkkdGhpcy0+dXBkYXRlKAotCQkJCQknVVBEQVRFIGVtYWlsX3RlbXBsYXRlc19kYXRhCi0JCQkJ
CVNFVCBzdWJqZWN0ID0gPywKLQkJCQkJCWJvZHkgPSA/Ci0JCQkJCVdIRVJFIGVtYWlsX2tleSA9
ID8gQU5EIGxvY2FsZSA9ID8nLAotCQkJCQlhcnJheSgkZW1haWxUZW1wbGF0ZS0+Z2V0U3ViamVj
dCgkbG9jYWxlKSwgJGVtYWlsVGVtcGxhdGUtPmdldEJvZHkoJGxvY2FsZSksICRlbWFpbFRlbXBs
YXRlLT5nZXRFbWFpbEtleSgpLCAkbG9jYWxlKQotCQkJCSk7Ci0JCQl9Ci0KLQkJCSRyZXN1bHQt
PkNsb3NlKCk7Ci0JCQl1bnNldCgkcmVzdWx0KTsKLQkJfQorCWZ1bmN0aW9uICZnZXRFbWFpbFRl
bXBsYXRlKCRlbWFpbEtleSwgJGxvY2FsZSkgeworCQkkcmV0dXJuZXIgPSYgcGFyZW50OjpnZXRF
bWFpbFRlbXBsYXRlKCRlbWFpbEtleSwgJGxvY2FsZSwgMCwgMCk7CisJCXJldHVybiAkcmV0dXJu
ZXI7CiAJfQogCiAJLyoqCkBAIC0xNjksMzggKzU2LDM2IEBAIGNsYXNzIEVtYWlsVGVtcGxhdGVE
QU8gZXh0ZW5kcyBEQU8gewogCSAqIEBwYXJhbSAkZW1haWxLZXkgc3RyaW5nCiAJICovCiAJZnVu
Y3Rpb24gZGVsZXRlRW1haWxUZW1wbGF0ZUJ5S2V5KCRlbWFpbEtleSkgewotCQlyZXR1cm4gJHRo
aXMtPnVwZGF0ZSgKLQkJCSdERUxFVEUgRlJPTSBlbWFpbF90ZW1wbGF0ZXMgV0hFUkUgZW1haWxf
a2V5ID0gPycsCi0JCQkkZW1haWxLZXkKLQkJKTsKKwkJcmV0dXJuIHBhcmVudDo6ZGVsZXRlRW1h
aWxUZW1wbGF0ZUJ5S2V5KCRlbWFpbEtleSwgMCwgMCk7CiAJfQogCiAJLyoqCi0JICogR2V0IHRo
ZSBJRCBvZiB0aGUgbGFzdCBpbnNlcnRlZCBlbWFpbCB0ZW1wbGF0ZS4KLQkgKiBAcmV0dXJuIGlu
dAorCSAqIFJldHJpZXZlIGFsbCBlbWFpbCB0ZW1wbGF0ZXMuCisJICogQHBhcmFtICRsb2NhbGUg
c3RyaW5nCisJICogQHBhcmFtICRyYW5nZUluZm8gb2JqZWN0IG9wdGlvbmFsCisJICogQHJldHVy
biBhcnJheSBFbWFpbCB0ZW1wbGF0ZXMKIAkgKi8KLQlmdW5jdGlvbiBnZXRJbnNlcnRFbWFpbElk
KCkgewotCQlyZXR1cm4gJHRoaXMtPmdldEluc2VydElkKCdlbWFpbF90ZW1wbGF0ZXMnLCAnZW1h
aWxJZCcpOworCWZ1bmN0aW9uICZnZXRFbWFpbFRlbXBsYXRlcygkbG9jYWxlLCAkcmFuZ2VJbmZv
ID0gbnVsbCkgeworCQkkcmV0dXJuZXIgPSYgcGFyZW50OjpnZXRFbWFpbFRlbXBsYXRlcygkbG9j
YWxlLCAwLCAwLCAkcmFuZ2VJbmZvKTsKKwkJcmV0dXJuICRyZXR1cm5lcjsKIAl9CiAKIAkvKioK
LQkgKiBEZWxldGUgYWxsIGVtYWlsIHRlbXBsYXRlcyBmb3IgYSBzcGVjaWZpYyBsb2NhbGUuCi0J
ICogQHBhcmFtICRsb2NhbGUgc3RyaW5nCisJICogQ2hlY2sgaWYgYSB0ZW1wbGF0ZSBleGlzdHMg
d2l0aCB0aGUgZ2l2ZW4gZW1haWwga2V5LgorCSAqIEBwYXJhbSAkZW1haWxLZXkgc3RyaW5nCisJ
ICogQHJldHVybiBib29sZWFuCiAJICovCi0JZnVuY3Rpb24gZGVsZXRlRW1haWxUZW1wbGF0ZXNC
eUxvY2FsZSgkbG9jYWxlKSB7Ci0JCSR0aGlzLT51cGRhdGUoCi0JCQknREVMRVRFIEZST00gZW1h
aWxfdGVtcGxhdGVzX2RhdGEgV0hFUkUgbG9jYWxlID0gPycsICRsb2NhbGUKLQkJKTsKKwlmdW5j
dGlvbiB0ZW1wbGF0ZUV4aXN0c0J5S2V5KCRlbWFpbEtleSkgeworCQlyZXR1cm4gcGFyZW50Ojp0
ZW1wbGF0ZUV4aXN0c0J5S2V5KCRlbWFpbEtleSwgMCwgMCk7CiAJfQogCiAJLyoqCi0JICogRGVs
ZXRlIGFsbCBkZWZhdWx0IGVtYWlsIHRlbXBsYXRlcyBmb3IgYSBzcGVjaWZpYyBsb2NhbGUuCi0J
ICogQHBhcmFtICRsb2NhbGUgc3RyaW5nCisJICogQ2hlY2sgaWYgYSBjdXN0b20gdGVtcGxhdGUg
ZXhpc3RzIHdpdGggdGhlIGdpdmVuIGVtYWlsIGtleSBmb3IgYSBqb3VybmFsLgorCSAqIEBwYXJh
bSAkZW1haWxLZXkgc3RyaW5nCisJICogQHJldHVybiBib29sZWFuCiAJICovCi0JZnVuY3Rpb24g
ZGVsZXRlRGVmYXVsdEVtYWlsVGVtcGxhdGVzQnlMb2NhbGUoJGxvY2FsZSkgewotCQkvKiR0aGlz
LT51cGRhdGUoCi0JCQknREVMRVRFIEZST00gZW1haWxfdGVtcGxhdGVzX2RlZmF1bHRfZGF0YSBX
SEVSRSBsb2NhbGUgPSA/JywgJGxvY2FsZQotCQkpOyovIC8vIE5vdCB1c2VkIGluIEhhcnZlc3Rl
ciwgYnV0IGNhbGxlZCBmcm9tIFBLUC4gRklYTUUKKwlmdW5jdGlvbiBjdXN0b21UZW1wbGF0ZUV4
aXN0c0J5S2V5KCRlbWFpbEtleSkgeworCQlyZXR1cm4gcGFyZW50OjpjdXN0b21UZW1wbGF0ZUV4
aXN0c0J5S2V5KCRlbWFpbEtleSwgMCwgMCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kYnNjcmlw
dHMveG1sL2RhdGEvbG9jYWxlL2VuX1VTL2VtYWlsX3RlbXBsYXRlc19kYXRhLnhtbCBiL2Ric2Ny
aXB0cy94bWwvZGF0YS9sb2NhbGUvZW5fVVMvZW1haWxfdGVtcGxhdGVzX2RhdGEueG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2E0MmMxLi4wMDAwMDAwCi0tLSBhL2Ric2NyaXB0
cy94bWwvZGF0YS9sb2NhbGUvZW5fVVMvZW1haWxfdGVtcGxhdGVzX2RhdGEueG1sCisrKyAvZGV2
L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTwhRE9DVFlQRSBkYXRhIFNZU1RFTSAiLi4vLi4vLi4vLi4vLi4vbGliL3BrcC9kdGQv
eG1sRGF0YS5kdGQiPgotCi08IS0tCi0gICogZW1haWxfdGVtcGxhdGVzX2RhdGEueG1sCi0gICoK
LSAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBbGVjIFNtZWNoZXIgYW5kIEpvaG4gV2lsbGlu
c2t5Ci0gICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHUEwgdjIuIEZvciBmdWxsIHRlcm1z
IHNlZSB0aGUgZmlsZSBkb2NzL0NPUFlJTkcuCi0gICoKLSAgKiBFbWFpbCB0ZW1wbGF0ZXMgZGF0
YSBYTUwgZmlsZSAoRW5nbGlzaCkuCi0gICoKLSAgKiAkSWQkCi0gIC0tPgotCi08ZGF0YT4KLQk8
dGFibGUgbmFtZT0iZW1haWxfdGVtcGxhdGVzX2RhdGEiPgotCQk8ZmllbGRfZGVmYXVsdCBuYW1l
PSJsb2NhbGUiPmVuX1VTPC9maWVsZF9kZWZhdWx0PgotCi0JCTwhLS0KLQkJICAqCi0JCSAgKiBH
ZW5lcmFsCi0JCSAgKgotCQkgIC0tPgotCQk8cm93PgotCQkJPGZpZWxkIG5hbWU9ImVtYWlsX2tl
eSI+UEFTU1dPUkRfUkVTRVRfQ09ORklSTTwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0ic3ViamVj
dCI+UGFzc3dvcmQgUmVzZXQgQ29uZmlybWF0aW9uPC9maWVsZD4KLQkJCTxmaWVsZCBuYW1lPSJi
b2R5Ij5XZSBoYXZlIHJlY2VpdmVkIGEgcmVxdWVzdCB0byByZXNldCB5b3VyIHBhc3N3b3JkIGZv
ciB0aGUgeyRzaXRlVGl0bGV9IHdlYiBzaXRlLgotCi1JZiB5b3UgZGlkIG5vdCBtYWtlIHRoaXMg
cmVxdWVzdCwgcGxlYXNlIGlnbm9yZSB0aGlzIGVtYWlsIGFuZCB5b3VyIHBhc3N3b3JkIHdpbGwg
bm90IGJlIGNoYW5nZWQuIElmIHlvdSB3aXNoIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQsIGNsaWNr
IG9uIHRoZSBiZWxvdyBVUkwuCi0KLVJlc2V0IG15IHBhc3N3b3JkOiB7JHVybH0KLQoteyRwcmlu
Y2lwYWxDb250YWN0U2lnbmF0dXJlfTwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0iZGVzY3JpcHRp
b24iPlRoaXMgZW1haWwgaXMgc2VudCB0byBhIHJlZ2lzdGVyZWQgdXNlciB3aGVuIHRoZXkgaW5k
aWNhdGUgdGhhdCB0aGV5IGhhdmUgZm9yZ290dGVuIHRoZWlyIHBhc3N3b3JkIG9yIGFyZSB1bmFi
bGUgdG8gbG9naW4uIEl0IHByb3ZpZGVzIGEgVVJMIHRoZXkgY2FuIGZvbGxvdyB0byByZXNldCB0
aGVpciBwYXNzd29yZC48L2ZpZWxkPgotCQk8L3Jvdz4KLQkJPHJvdz4KLQkJCTxmaWVsZCBuYW1l
PSJlbWFpbF9rZXkiPlBBU1NXT1JEX1JFU0VUPC9maWVsZD4KLQkJCTxmaWVsZCBuYW1lPSJzdWJq
ZWN0Ij5QYXNzd29yZCBSZXNldDwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0iYm9keSI+WW91ciBw
YXNzd29yZCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVzZXQgZm9yIHVzZSB3aXRoIHRoZSB7JHNp
dGVUaXRsZX0gd2ViIHNpdGUuIFBsZWFzZSByZXRhaW4gdGhpcyB1c2VybmFtZSBhbmQgcGFzc3dv
cmQsIGFzIGl0IGlzIG5lY2Vzc2FyeSBmb3IgYWxsIHdvcmsgd2l0aCB0aGUgc2l0ZS4KLQotWW91
ciB1c2VybmFtZTogeyR1c2VybmFtZX0KLVlvdXIgbmV3IHBhc3N3b3JkOiB7JHBhc3N3b3JkfQot
Ci17JHByaW5jaXBhbENvbnRhY3RTaWduYXR1cmV9PC9maWVsZD4KLQkJCTxmaWVsZCBuYW1lPSJk
ZXNjcmlwdGlvbiI+VGhpcyBlbWFpbCBpcyBzZW50IHRvIGEgcmVnaXN0ZXJlZCB1c2VyIHdoZW4g
dGhleSBoYXZlIHN1Y2Nlc3NmdWxseSByZXNldCB0aGVpciBwYXNzd29yZCBmb2xsb3dpbmcgdGhl
IHByb2Nlc3MgZGVzY3JpYmVkIGluIHRoZSBQQVNTV09SRF9SRVNFVF9DT05GSVJNIGVtYWlsLjwv
ZmllbGQ+Ci0JCTwvcm93PgotCQk8cm93PgotCQkJPGZpZWxkIG5hbWU9ImVtYWlsX2tleSI+VVNF
Ul9SRUdJU1RFUjwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0ic3ViamVjdCI+Sm91cm5hbCBSZWdp
c3RyYXRpb248L2ZpZWxkPgotCQkJPGZpZWxkIG5hbWU9ImJvZHkiPnskdXNlckZ1bGxOYW1lfQot
Ci1Zb3UgaGF2ZSBub3cgYmVlbiByZWdpc3RlcmVkIGFzIGEgdXNlci4gV2UgaGF2ZSBpbmNsdWRl
ZCB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBpbiB0aGlzIGVtYWlsLCB3aGljaCBhcmUgbmVl
ZGVkIGZvciBhbGwgd29yayB3aXRoIHRoaXMgd2Vic2l0ZS4gQXQgYW55IHBvaW50LCB5b3UgY2Fu
IGFzayB0byBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3Qgb2YgdXNlcnMgYnkgY29udGFjdGluZyBt
ZS4KLQotVXNlcm5hbWU6IHskdXNlcm5hbWV9Ci1QYXNzd29yZDogeyRwYXNzd29yZH0KLQotVGhh
bmsgeW91LAoteyRwcmluY2lwYWxDb250YWN0U2lnbmF0dXJlfTwvZmllbGQ+Ci0JCQk8ZmllbGQg
bmFtZT0iZGVzY3JpcHRpb24iPlRoaXMgZW1haWwgaXMgc2VudCB0byBhIG5ld2x5IHJlZ2lzdGVy
ZWQgdXNlciB0byB3ZWxjb21lIHRoZW0gdG8gdGhlIHN5c3RlbSBhbmQgcHJvdmlkZSB0aGVtIHdp
dGggYSByZWNvcmQgb2YgdGhlaXIgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLjwvZmllbGQ+Ci0JCTwv
cm93PgotCQk8cm93PgotCQkJPGZpZWxkIG5hbWU9ImVtYWlsX2tleSI+VVNFUl9WQUxJREFURTwv
ZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0ic3ViamVjdCI+VmFsaWRhdGUgWW91ciBBY2NvdW50PC9m
aWVsZD4KLQkJCTxmaWVsZCBuYW1lPSJib2R5Ij57JHVzZXJGdWxsTmFtZX0KLQotWW91IGhhdmUg
Y3JlYXRlZCBhbiBhY2NvdW50LCBidXQgYmVmb3JlIHlvdSBjYW4gc3RhcnQgdXNpbmcgaXQsIHlv
dSBuZWVkIHRvIHZhbGlkYXRlIHlvdXIgZW1haWwgYWNjb3VudC4gVG8gZG8gdGhpcywgc2ltcGx5
IGZvbGxvdyB0aGUgbGluayBiZWxvdzoKLQoteyRhY3RpdmF0ZVVybH0KLQotVGhhbmsgeW91LAot
eyRwcmluY2lwYWxDb250YWN0U2lnbmF0dXJlfTwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0iZGVz
Y3JpcHRpb24iPlRoaXMgZW1haWwgaXMgc2VudCB0byBhIG5ld2x5IHJlZ2lzdGVyZWQgdXNlciB0
byB3ZWxjb21lIHRoZW0gdG8gdGhlIHN5c3RlbSBhbmQgcHJvdmlkZSB0aGVtIHdpdGggYSByZWNv
cmQgb2YgdGhlaXIgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLjwvZmllbGQ+Ci0JCTwvcm93PgotCQk8
cm93PgotCQkJPGZpZWxkIG5hbWU9ImVtYWlsX2tleSI+TkVXX0FSQ0hJVkVfTk9USUZZPC9maWVs
ZD4KLQkJCTxmaWVsZCBuYW1lPSJzdWJqZWN0Ij5BcmNoaXZlIEFkZGVkOiB7JGFyY2hpdmVUaXRs
ZX08L2ZpZWxkPgotCQkJPGZpZWxkIG5hbWU9ImJvZHkiPkEgbmV3IGFyY2hpdmUsICJ7JGFyY2hp
dmVUaXRsZX0iLCBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGFkZGl0aW9uIHRvIHskc2l0ZVRpdGxl
fS4gVG8gaW5kZXggdGhpcyBhcmNoaXZlLCBsb2cgaW4gYXQgeyRsb2dpblVybH0gb3IgdXNlIHRo
ZSBjb21tYW5kLWxpbmUgaGFydmVzdGVyIHRvb2wuPC9maWVsZD4KLQkJCTxmaWVsZCBuYW1lPSJk
ZXNjcmlwdGlvbiI+VGhpcyBlbWFpbCBpcyBzZW50IHRvIHRoZSBzaXRlIGFkbWluaXN0cmF0b3Ig
dG8gbm90aWZ5IHRoZW0gYWJvdXQgYSBuZXcgYXJjaGl2ZSBzdWJtaXNzaW9uIHRoYXQgbmVlZHMg
dG8gYmUgaW5kZXhlZC48L2ZpZWxkPgotCQk8L3Jvdz4KLQk8L3RhYmxlPgotPC9kYXRhPgpkaWZm
IC0tZ2l0IGEvZGJzY3JpcHRzL3htbC9kYXRhL2xvY2FsZS90ZV9TVC9lbWFpbF90ZW1wbGF0ZXNf
ZGF0YS54bWwgYi9kYnNjcmlwdHMveG1sL2RhdGEvbG9jYWxlL3RlX1NUL2VtYWlsX3RlbXBsYXRl
c19kYXRhLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2ODFmNi4uMDAwMDAw
MAotLS0gYS9kYnNjcmlwdHMveG1sL2RhdGEvbG9jYWxlL3RlX1NUL2VtYWlsX3RlbXBsYXRlc19k
YXRhLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgZGF0YSBTWVNURU0gIi4uLy4uLy4uLy4u
Ly4uL2xpYi9wa3AvZHRkL3htbERhdGEuZHRkIj4KLQotPCEtLQotICAqIGVtYWlsX3RlbXBsYXRl
c19kYXRhLnhtbAotICAqCi0gICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMTAgQWxlYyBTbWVjaGVy
IGFuZCBKb2huIFdpbGxpbnNreQotICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR1BMIHYy
LiBGb3IgZnVsbCB0ZXJtcyBzZWUgdGhlIGZpbGUgZG9jcy9DT1BZSU5HLgotICAqCi0gICogRW1h
aWwgdGVtcGxhdGVzIGRhdGEgWE1MIGZpbGUgKEVuZ2xpc2gpLgotICAqCi0gICogJElkJAotICAt
LT4KLQotPGRhdGE+Ci0JPHRhYmxlIG5hbWU9ImVtYWlsX3RlbXBsYXRlc19kYXRhIj4KLQkJPGZp
ZWxkX2RlZmF1bHQgbmFtZT0ibG9jYWxlIj5lbl9VUzwvZmllbGRfZGVmYXVsdD4KLQotCQk8IS0t
Ci0JCSAgKgotCQkgICogR2VuZXJhbAotCQkgICoKLQkJICAtLT4KLQkJPHJvdz4KLQkJCTxmaWVs
ZCBuYW1lPSJlbWFpbF9rZXkiPk5FV19BUkNISVZFX05PVElGWTwvZmllbGQ+Ci0JCQk8ZmllbGQg
bmFtZT0ic3ViamVjdCI+QXJjaGl2ZSBBZGRlZDogeyRhcmNoaXZlVGl0bGV9PC9maWVsZD4KLQkJ
CTxmaWVsZCBuYW1lPSJib2R5Ij5BIG5ldyBhcmNoaXZlLCAieyRhcmNoaXZlVGl0bGV9IiwgaGFz
IGJlZW4gc3VibWl0dGVkIGZvciBhZGRpdGlvbiB0byB7JHNpdGVUaXRsZX0uIFRvIGluZGV4IHRo
aXMgYXJjaGl2ZSwgbG9nIGluIGF0IHskbG9naW5Vcmx9IG9yIHVzZSB0aGUgY29tbWFuZC1saW5l
IGhhcnZlc3RlciB0b29sLjwvZmllbGQ+Ci0JCQk8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb24iPlRo
aXMgZW1haWwgaXMgc2VudCB0byB0aGUgc2l0ZSBhZG1pbmlzdHJhdG9yIHRvIG5vdGlmeSB0aGVt
IGFib3V0IGEgbmV3IGFyY2hpdmUgc3VibWlzc2lvbiB0aGF0IG5lZWRzIHRvIGJlIGluZGV4ZWQu
PC9maWVsZD4KLQkJPC9yb3c+Ci0JPC90YWJsZT4KLTwvZGF0YT4KZGlmZiAtLWdpdCBhL2Ric2Ny
aXB0cy94bWwvaGFydmVzdGVyMl9zY2hlbWEueG1sIGIvZGJzY3JpcHRzL3htbC9oYXJ2ZXN0ZXIy
X3NjaGVtYS54bWwKaW5kZXggYzZjODUzYS4uMWFhNjZiOCAxMDA2NDQKLS0tIGEvZGJzY3JpcHRz
L3htbC9oYXJ2ZXN0ZXIyX3NjaGVtYS54bWwKKysrIGIvZGJzY3JpcHRzL3htbC9oYXJ2ZXN0ZXIy
X3NjaGVtYS54bWwKQEAgLTIxMiw2MSArMjEyLDYgQEAKIAkKIAk8IS0tCiAJICAqCi0JICAqIFRB
QkxFIGVtYWlsX3RlbXBsYXRlcwotCSAgKgotCSAgLS0+Ci0JPHRhYmxlIG5hbWU9ImVtYWlsX3Rl
bXBsYXRlcyI+Ci0JCTxmaWVsZCBuYW1lPSJlbWFpbF9pZCIgdHlwZT0iSTQiPgotCQkJPEtFWS8+
Ci0JCQk8QVVUT0lOQ1JFTUVOVC8+Ci0JCTwvZmllbGQ+Ci0JCTxmaWVsZCBuYW1lPSJlbWFpbF9r
ZXkiIHR5cGU9IkMyIiBzaXplPSIzMCI+Ci0JCQk8Tk9UTlVMTC8+Ci0JCQk8ZGVzY3I+VW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoaXMgZW1haWwuPC9kZXNjcj4KLQkJPC9maWVsZD4KLQkJPGZpZWxk
IG5hbWU9ImVuYWJsZWQiIHR5cGU9IkkxIj4KLQkJCTxOT1ROVUxMLz4KLQkJCTxERUZBVUxUIFZB
TFVFPSIxIi8+Ci0JCTwvZmllbGQ+Ci0JCTxmaWVsZCBuYW1lPSJjYW5fZGlzYWJsZSIgdHlwZT0i
STEiPgotCQkJPE5PVE5VTEwvPgotCQkJPERFRkFVTFQgVkFMVUU9IjEiLz4KLQkJPC9maWVsZD4K
LQkJPGZpZWxkIG5hbWU9ImNhbl9lZGl0IiB0eXBlPSJJMSI+Ci0JCQk8Tk9UTlVMTC8+Ci0JCQk8
REVGQVVMVCBWQUxVRT0iMSIvPgotCQk8L2ZpZWxkPgotCQk8ZGVzY3I+RW1haWwgdGVtcGxhdGVz
LjwvZGVzY3I+Ci0JCTxpbmRleCBuYW1lPSJlbWFpbF90ZW1wbGF0ZXNfZGVmYXVsdF9lbWFpbF9r
ZXkiPgotCQkJPGNvbD5lbWFpbF9rZXk8L2NvbD4KLQkJCTxVTklRVUUvPgotCQk8L2luZGV4Pgot
CTwvdGFibGU+Ci0JCi0JPCEtLQotCSAgKgotCSAgKiBUQUJMRSBlbWFpbF90ZW1wbGF0ZXNfZGF0
YQotCSAgKgotCSAgLS0+Ci0JPHRhYmxlIG5hbWU9ImVtYWlsX3RlbXBsYXRlc19kYXRhIj4KLQkJ
PGZpZWxkIG5hbWU9ImVtYWlsX2tleSIgdHlwZT0iQzIiIHNpemU9IjMwIj4KLQkJCTxLRVkvPgot
CQkJPGRlc2NyPlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGVtYWlsLjwvZGVzY3I+Ci0JCTwv
ZmllbGQ+Ci0JCTxmaWVsZCBuYW1lPSJsb2NhbGUiIHR5cGU9IkMyIiBzaXplPSI1Ij4KLQkJCTxL
RVkvPgotCQkJPERFRkFVTFQgVkFMVUU9ImVuX1VTIi8+Ci0JCTwvZmllbGQ+Ci0JCTxmaWVsZCBu
YW1lPSJzdWJqZWN0IiB0eXBlPSJDMiIgc2l6ZT0iMTIwIj4KLQkJCTxOT1ROVUxMLz4KLQkJPC9m
aWVsZD4KLQkJPGZpZWxkIG5hbWU9ImJvZHkiIHR5cGU9IlgiLz4KLQkJPGZpZWxkIG5hbWU9ImRl
c2NyaXB0aW9uIiB0eXBlPSJYIi8+Ci0JCTxkZXNjcj5EZWZhdWx0IGRhdGEgZm9yIGVtYWlsIHRl
bXBsYXRlcy48L2Rlc2NyPgotCTwvdGFibGU+Ci0JCi0JPCEtLQotCSAgKgogCSAgKiBUQUJMRSBy
dF92ZXJzaW9ucwogCSAgKgogCSAtLT4KZGlmZiAtLWdpdCBhL2Ric2NyaXB0cy94bWwvaW5zdGFs
bC54bWwgYi9kYnNjcmlwdHMveG1sL2luc3RhbGwueG1sCmluZGV4IDRjNWQ2MjQuLmE0ZWUxYmUg
MTAwNjQ0Ci0tLSBhL2Ric2NyaXB0cy94bWwvaW5zdGFsbC54bWwKKysrIGIvZGJzY3JpcHRzL3ht
bC9pbnN0YWxsLnhtbApAQCAtMjMsOCArMjMsNiBAQAogCTxzY2hlbWEgZmlsZT0iZGJzY3JpcHRz
L3htbC9oYXJ2ZXN0ZXIyX3NjaGVtYS54bWwiIC8+CiAKIAk8IS0tIE90aGVyIGluc3RhbGwgdGFz
a3MgLS0+Ci0JPGRhdGEgZmlsZT0iZGJzY3JpcHRzL3htbC9kYXRhL2VtYWlsX3RlbXBsYXRlcy54
bWwiIC8+Ci0JPGRhdGEgZmlsZT0iZGJzY3JpcHRzL3htbC9kYXRhL2xvY2FsZS97JGluc3RhbGxl
ZExvY2FsZX0vZW1haWxfdGVtcGxhdGVzX2RhdGEueG1sIiAvPgogCTxjb2RlIGZ1bmN0aW9uPSJj
cmVhdGVEYXRhIiAvPgogCTxjb2RlIGZ1bmN0aW9uPSJjcmVhdGVDb25maWciIC8+CiA8L2luc3Rh
bGw+CmRpZmYgLS1naXQgYS9sb2NhbGUvZW5fVVMvZW1haWxUZW1wbGF0ZXMueG1sIGIvbG9jYWxl
L2VuX1VTL2VtYWlsVGVtcGxhdGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41OGYyNWYzCi0tLSAvZGV2L251bGwKKysrIGIvbG9jYWxlL2VuX1VTL2VtYWlsVGVtcGxh
dGVzLnhtbApAQCAtMCwwICsxLDY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPCFET0NUWVBFIGVtYWlsX3RleHRzIFNZU1RFTSAiLi4vLi4vbGliL3BrcC9kdGQv
ZW1haWxUZW1wbGF0ZURhdGEuZHRkIj4KKzwhLS0KKyAgKiBsb2NhbGUvZW5fVVMvZW1haWxUZW1w
bGF0ZURhdGEueG1sCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBbGVjIFNtZWNo
ZXIgYW5kIEpvaG4gV2lsbGluc2t5CisgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHUEwg
djIuIEZvciBmdWxsIHRlcm1zIHNlZSB0aGUgZmlsZSBkb2NzL0NPUFlJTkcuCisgICoKKyAgKiBM
b2NhbGl6ZWQgZW1haWwgdGVtcGxhdGVzIFhNTCBmaWxlLgorICAqCisgIC0tPgorPGVtYWlsX3Rl
eHRzIGxvY2FsZT0iZW5fVVMiPgorCTxlbWFpbF90ZXh0IGtleT0iUEFTU1dPUkRfUkVTRVRfQ09O
RklSTSI+CisJCTxzdWJqZWN0PlBhc3N3b3JkIFJlc2V0IENvbmZpcm1hdGlvbjwvc3ViamVjdD4K
KwkJPGJvZHk+V2UgaGF2ZSByZWNlaXZlZCBhIHJlcXVlc3QgdG8gcmVzZXQgeW91ciBwYXNzd29y
ZCBmb3IgdGhlIHskc2l0ZVRpdGxlfSB3ZWIgc2l0ZS4KKworSWYgeW91IGRpZCBub3QgbWFrZSB0
aGlzIHJlcXVlc3QsIHBsZWFzZSBpZ25vcmUgdGhpcyBlbWFpbCBhbmQgeW91ciBwYXNzd29yZCB3
aWxsIG5vdCBiZSBjaGFuZ2VkLiBJZiB5b3Ugd2lzaCB0byByZXNldCB5b3VyIHBhc3N3b3JkLCBj
bGljayBvbiB0aGUgYmVsb3cgVVJMLgorCitSZXNldCBteSBwYXNzd29yZDogeyR1cmx9CisKK3sk
cHJpbmNpcGFsQ29udGFjdFNpZ25hdHVyZX08L2JvZHk+CisJCTxkZXNjcmlwdGlvbj5UaGlzIGVt
YWlsIGlzIHNlbnQgdG8gYSByZWdpc3RlcmVkIHVzZXIgd2hlbiB0aGV5IGluZGljYXRlIHRoYXQg
dGhleSBoYXZlIGZvcmdvdHRlbiB0aGVpciBwYXNzd29yZCBvciBhcmUgdW5hYmxlIHRvIGxvZ2lu
LiBJdCBwcm92aWRlcyBhIFVSTCB0aGV5IGNhbiBmb2xsb3cgdG8gcmVzZXQgdGhlaXIgcGFzc3dv
cmQuPC9kZXNjcmlwdGlvbj4KKwk8L2VtYWlsX3RleHQ+CisJPGVtYWlsX3RleHQga2V5PSJQQVNT
V09SRF9SRVNFVCI+CisJCTxzdWJqZWN0PlBhc3N3b3JkIFJlc2V0PC9zdWJqZWN0PgorCQk8Ym9k
eT5Zb3VyIHBhc3N3b3JkIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZXNldCBmb3IgdXNlIHdpdGgg
dGhlIHskc2l0ZVRpdGxlfSB3ZWIgc2l0ZS4gUGxlYXNlIHJldGFpbiB0aGlzIHVzZXJuYW1lIGFu
ZCBwYXNzd29yZCwgYXMgaXQgaXMgbmVjZXNzYXJ5IGZvciBhbGwgd29yayB3aXRoIHRoZSBzaXRl
LgorCitZb3VyIHVzZXJuYW1lOiB7JHVzZXJuYW1lfQorWW91ciBuZXcgcGFzc3dvcmQ6IHskcGFz
c3dvcmR9CisKK3skcHJpbmNpcGFsQ29udGFjdFNpZ25hdHVyZX08L2JvZHk+CisJCTxkZXNjcmlw
dGlvbj5UaGlzIGVtYWlsIGlzIHNlbnQgdG8gYSByZWdpc3RlcmVkIHVzZXIgd2hlbiB0aGV5IGhh
dmUgc3VjY2Vzc2Z1bGx5IHJlc2V0IHRoZWlyIHBhc3N3b3JkIGZvbGxvd2luZyB0aGUgcHJvY2Vz
cyBkZXNjcmliZWQgaW4gdGhlIFBBU1NXT1JEX1JFU0VUX0NPTkZJUk0gZW1haWwuPC9kZXNjcmlw
dGlvbj4KKwk8L2VtYWlsX3RleHQ+CisJPGVtYWlsX3RleHQga2V5PSJVU0VSX1JFR0lTVEVSIj4K
KwkJPHN1YmplY3Q+Sm91cm5hbCBSZWdpc3RyYXRpb248L3N1YmplY3Q+CisJCTxib2R5PnskdXNl
ckZ1bGxOYW1lfQorCitZb3UgaGF2ZSBub3cgYmVlbiByZWdpc3RlcmVkIGFzIGEgdXNlci4gV2Ug
aGF2ZSBpbmNsdWRlZCB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBpbiB0aGlzIGVtYWlsLCB3
aGljaCBhcmUgbmVlZGVkIGZvciBhbGwgd29yayB3aXRoIHRoaXMgd2Vic2l0ZS4gQXQgYW55IHBv
aW50LCB5b3UgY2FuIGFzayB0byBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3Qgb2YgdXNlcnMgYnkg
Y29udGFjdGluZyBtZS4KKworVXNlcm5hbWU6IHskdXNlcm5hbWV9CitQYXNzd29yZDogeyRwYXNz
d29yZH0KKworVGhhbmsgeW91LAoreyRwcmluY2lwYWxDb250YWN0U2lnbmF0dXJlfTwvYm9keT4K
KwkJPGRlc2NyaXB0aW9uPlRoaXMgZW1haWwgaXMgc2VudCB0byBhIG5ld2x5IHJlZ2lzdGVyZWQg
dXNlciB0byB3ZWxjb21lIHRoZW0gdG8gdGhlIHN5c3RlbSBhbmQgcHJvdmlkZSB0aGVtIHdpdGgg
YSByZWNvcmQgb2YgdGhlaXIgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLjwvZGVzY3JpcHRpb24+CisJ
PC9lbWFpbF90ZXh0PgorCTxlbWFpbF90ZXh0IGtleT0iVVNFUl9WQUxJREFURSI+CisJCTxzdWJq
ZWN0PlZhbGlkYXRlIFlvdXIgQWNjb3VudDwvc3ViamVjdD4KKwkJPGJvZHk+eyR1c2VyRnVsbE5h
bWV9CisKK1lvdSBoYXZlIGNyZWF0ZWQgYW4gYWNjb3VudCwgYnV0IGJlZm9yZSB5b3UgY2FuIHN0
YXJ0IHVzaW5nIGl0LCB5b3UgbmVlZCB0byB2YWxpZGF0ZSB5b3VyIGVtYWlsIGFjY291bnQuIFRv
IGRvIHRoaXMsIHNpbXBseSBmb2xsb3cgdGhlIGxpbmsgYmVsb3c6CisKK3skYWN0aXZhdGVVcmx9
CisKK1RoYW5rIHlvdSwKK3skcHJpbmNpcGFsQ29udGFjdFNpZ25hdHVyZX08L2JvZHk+CisJCTxk
ZXNjcmlwdGlvbj5UaGlzIGVtYWlsIGlzIHNlbnQgdG8gYSBuZXdseSByZWdpc3RlcmVkIHVzZXIg
dG8gd2VsY29tZSB0aGVtIHRvIHRoZSBzeXN0ZW0gYW5kIHByb3ZpZGUgdGhlbSB3aXRoIGEgcmVj
b3JkIG9mIHRoZWlyIHVzZXJuYW1lIGFuZCBwYXNzd29yZC48L2Rlc2NyaXB0aW9uPgorCTwvZW1h
aWxfdGV4dD4KKwk8ZW1haWxfdGV4dCBrZXk9Ik5FV19BUkNISVZFX05PVElGWSI+CisJCTxzdWJq
ZWN0PkFyY2hpdmUgQWRkZWQ6IHskYXJjaGl2ZVRpdGxlfTwvc3ViamVjdD4KKwkJPGJvZHk+QSBu
ZXcgYXJjaGl2ZSwgInskYXJjaGl2ZVRpdGxlfSIsIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgYWRk
aXRpb24gdG8geyRzaXRlVGl0bGV9LiBUbyBpbmRleCB0aGlzIGFyY2hpdmUsIGxvZyBpbiBhdCB7
JGxvZ2luVXJsfSBvciB1c2UgdGhlIGNvbW1hbmQtbGluZSBoYXJ2ZXN0ZXIgdG9vbC48L2JvZHk+
CisJCTxkZXNjcmlwdGlvbj5UaGlzIGVtYWlsIGlzIHNlbnQgdG8gdGhlIHNpdGUgYWRtaW5pc3Ry
YXRvciB0byBub3RpZnkgdGhlbSBhYm91dCBhIG5ldyBhcmNoaXZlIHN1Ym1pc3Npb24gdGhhdCBu
ZWVkcyB0byBiZSBpbmRleGVkLjwvZGVzY3JpcHRpb24+CisJPC9lbWFpbF90ZXh0PgorPC9lbWFp
bF90ZXh0cz4KZGlmZiAtLWdpdCBhL3JlZ2lzdHJ5L2VtYWlsVGVtcGxhdGVzLnhtbCBiL3JlZ2lz
dHJ5L2VtYWlsVGVtcGxhdGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jZDkwMmVjCi0tLSAvZGV2L251bGwKKysrIGIvcmVnaXN0cnkvZW1haWxUZW1wbGF0ZXMueG1s
CkBAIC0wLDAgKzEsMTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IURPQ1RZUEUgZW1haWxzIFNZU1RFTSAiLi4vLi4vbGliL3BrcC9kdGQvZW1haWxUZW1wbGF0
ZXMuZHRkIj4KKzwhLS0KKyAgKiByZWdpc3RyeS9lbWFpbFRlbXBsYXRlcy54bWwKKyAgKgorICAq
IENvcHlyaWdodCAoYykgMjAwNS0yMDEwIEFsZWMgU21lY2hlciBhbmQgSm9obiBXaWxsaW5za3kK
KyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgR05VIEdQTCB2Mi4gRm9yIGZ1bGwgdGVybXMgc2Vl
IHRoZSBmaWxlIGRvY3MvQ09QWUlORy4KKyAgKgorICAqIEVtYWlsIHRlbXBsYXRlcyBYTUwgZmls
ZS4KKyAgKgorICAtLT4KKzxlbWFpbHM+CisJPGVtYWlsIGtleT0iUEFTU1dPUkRfUkVTRVRfQ09O
RklSTSIgY2FuX2VkaXQ9IjEiIGNhbl9kaXNhYmxlPSIwIi8+CisJPGVtYWlsIGtleT0iUEFTU1dP
UkRfUkVTRVQiIGNhbl9lZGl0PSIxIiBjYW5fZGlzYWJsZT0iMCIvPgorCTxlbWFpbCBrZXk9IlVT
RVJfUkVHSVNURVIiIGNhbl9lZGl0PSIxIiBjYW5fZGlzYWJsZT0iMCIvPgorCTxlbWFpbCBrZXk9
IlVTRVJfVkFMSURBVEUiIGNhbl9lZGl0PSIxIiBjYW5fZGlzYWJsZT0iMCIvPgorCTxlbWFpbCBr
ZXk9Ik5FV19BUkNISVZFX05PVElGWSIgY2FuX2VkaXQ9IjEiIGNhbl9kaXNhYmxlPSIxIi8+Cis8
L2VtYWlscz4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xvY2FsZUNoZWNrLnBocCBiL3Rvb2xzL2xvY2Fs
ZUNoZWNrLnBocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUwNDQ5NC4uMDAwMDAw
MAotLS0gYS90b29scy9sb2NhbGVDaGVjay5waHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzEgKzAs
MCBAQAotPD9waHAKLQotLyoqCi0gKiBAZmlsZSB0b29scy9sb2NhbGVDaGVjay5waHAKLSAqCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBbGVjIFNtZWNoZXIgYW5kIEpvaG4gV2lsbGluc2t5
Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgR05VIEdQTCB2Mi4gRm9yIGZ1bGwgdGVybXMgc2Vl
IHRoZSBmaWxlIGRvY3MvQ09QWUlORy4KLSAqCi0gKiBAY2xhc3MgbG9jYWxlQ2hlY2sKLSAqIEBp
bmdyb3VwIHRvb2xzCi0gKgotICogQGJyaWVmIENMSSB0b29sIHRvIGNoZWNrIHRoZSB2YXJpb3Vz
IGxvY2FsZXMgZm9yIGNvbnNpc3RlbmN5LgotICoKLSAqLwotCi0vLyAkSWQkCi0KLQotcmVxdWly
ZShkaXJuYW1lKF9fRklMRV9fKSAuICcvYm9vdHN0cmFwLmluYy5waHAnKTsKLQotZGVmaW5lKCdN
QVNURVJfTE9DQUxFJywgJ2VuX1VTJyk7Ci0KLWRlZmluZSgnTE9DQUxFX0VSUk9SX01JU1NJTkdf
S0VZJywJCTB4MDAwMDAwMSk7Ci1kZWZpbmUoJ0xPQ0FMRV9FUlJPUl9FWFRSQV9LRVknLAkJMHgw
MDAwMDAyKTsKLWRlZmluZSgnTE9DQUxFX0VSUk9SX1NVU1BJQ0lPVVNfTEVOR1RIJywJMHgwMDAw
MDAzKTsKLWRlZmluZSgnTE9DQUxFX0VSUk9SX0RJRkZFUklOR19QQVJBTVMnLAkJMHgwMDAwMDA0
KTsKLQotZGVmaW5lKCdFTUFJTF9FUlJPUl9NSVNTSU5HX0VNQUlMJywJCTB4MDAwMDAwNSk7Ci1k
ZWZpbmUoJ0VNQUlMX0VSUk9SX0VYVFJBX0VNQUlMJywJCTB4MDAwMDAwNik7Ci1kZWZpbmUoJ0VN
QUlMX0VSUk9SX0RJRkZFUklOR19QQVJBTVMnLAkJMHgwMDAwMDA3KTsKLQotY2xhc3MgbG9jYWxl
Q2hlY2sgZXh0ZW5kcyBDb21tYW5kTGluZVRvb2wgewotCS8qKiBAdmFyICRsb2NhbGVzIExpc3Qg
b2YgbG9jYWxlcyB0byBjaGVjayAqLwotCXZhciAkbG9jYWxlczsKLQotCWZ1bmN0aW9uIGxvY2Fs
ZUNoZWNrKCRhcmdzKSB7Ci0JCXBhcmVudDo6Q29tbWFuZExpbmVUb29sKCRhcmdzKTsKLQkJYXJy
YXlfc2hpZnQoJGFyZ3MpOyAvLyBLbm9jayB0aGUgdG9vbCBuYW1lIG9mZiB0aGUgbGlzdAotCQkk
dGhpcy0+bG9jYWxlcyA9ICRhcmdzOwotCX0KLQotCS8qKgotCSAqIFByaW50IGNvbW1hbmQgdXNh
Z2UgaW5mb3JtYXRpb24uCi0JICovCi0JZnVuY3Rpb24gdXNhZ2UoKSB7Ci0JCWVjaG8gIlNjcmlw
dCB0byB0ZXN0IGxvY2FsZXMgZm9yIGNvbnNpc3RlbmN5XG4iCi0JCQkuICJVc2FnZTogeyR0aGlz
LT5zY3JpcHROYW1lfSBbbG9jYWxlTmFtZSAob3B0aW9uYWwpXSAuLi5cbiI7Ci0JfQotCi0JLyoq
Ci0JICogVGVzdCBsb2NhbGVzLgotCSAqLwotCWZ1bmN0aW9uIGV4ZWN1dGUoKSB7Ci0JCS8vIEZs
dXNoIHRoZSBmaWxlIGNhY2hlIGp1c3QgdG8gYmUgY2VydGFpbiB3ZSdyZSB1c2luZwotCQkvLyB0
aGUgbW9zdCByZWNlbnQgc3R1ZmYKLQkJaW1wb3J0KCdsaWIucGtwLmNsYXNzZXMuY2FjaGUuQ2Fj
aGVNYW5hZ2VyJyk7Ci0JCSRjYWNoZU1hbmFnZXIgPSYgQ2FjaGVNYW5hZ2VyOjpnZXRNYW5hZ2Vy
KCk7Ci0JCSRjYWNoZU1hbmFnZXItPmZsdXNoKCdsb2NhbGUnKTsKLQotCQkvLyBMb2FkIHBsdWdp
bnMgc28gdGhhdCB0aGVpciBsb2NhbGUgZGF0YSBpcyBpbmNsdWRlZCB0b28KLQkJJHBsdWdpbnMg
PSBhcnJheSgpOwotCQlmb3JlYWNoIChQbHVnaW5SZWdpc3RyeTo6Z2V0Q2F0ZWdvcmllcygpIGFz
ICRjYXRlZ29yeSkgewotCQkJZWNobyAiTG9hZGluZyBwbHVnaW4gY2F0ZWdvcnkgXCIkY2F0ZWdv
cnlcIi4uLlxuIjsKLQkJCSRtb3JlUGx1Z2lucyA9IFBsdWdpblJlZ2lzdHJ5Ojpsb2FkQ2F0ZWdv
cnkoJGNhdGVnb3J5KTsKLQkJCWlmIChpc19hcnJheSgkbW9yZVBsdWdpbnMpKSAkcGx1Z2lucyAr
PSAkbW9yZVBsdWdpbnM7Ci0JCX0KLQotCQlmb3JlYWNoIChMb2NhbGU6OmdldEFsbExvY2FsZXMo
KSBhcyAkbG9jYWxlID0+ICRuYW1lKSB7Ci0JCQlpZiAoIWVtcHR5KCR0aGlzLT5sb2NhbGVzKSAm
JiAhaW5fYXJyYXkoJGxvY2FsZSwgJHRoaXMtPmxvY2FsZXMpKSBjb250aW51ZTsKLQkJCWlmICgk
bG9jYWxlICE9IE1BU1RFUl9MT0NBTEUpIHsKLQkJCQllY2hvICJUZXN0aW5nIGxvY2FsZSBcIiRu
YW1lXCIgKCRsb2NhbGUpIGFnYWluc3QgcmVmZXJlbmNlIGxvY2FsZSAiIC4gTUFTVEVSX0xPQ0FM
RSAuICIuXG4iOwotCQkJCSR0aGlzLT50ZXN0TG9jYWxlKCRsb2NhbGUsIE1BU1RFUl9MT0NBTEUs
ICRwbHVnaW5zKTsKLQkJCQkkdGhpcy0+dGVzdEVtYWlscygkbG9jYWxlLCBNQVNURVJfTE9DQUxF
KTsKLQkJCX0KLQkJfQotCX0KLQotCWZ1bmN0aW9uIHRlc3RFbWFpbHMoJGxvY2FsZSwgJHJlZmVy
ZW5jZUxvY2FsZSkgewotCQlpbXBvcnQoJ2xpYi5wa3AuY2xhc3Nlcy5pbnN0YWxsLkluc3RhbGxl
cicpOyAvLyBCcmluZyBpbiBkYXRhIGRpcgotCi0JCSRlcnJvcnMgPSBhcnJheSgKLQkJKTsKLQot
CQkkeG1sUGFyc2VyID0gbmV3IFhNTFBhcnNlcigpOwotCQkkcmVmZXJlbmNlRW1haWxzID0mICR4
bWxQYXJzZXItPnBhcnNlKAotCQkJSU5TVEFMTEVSX0RBVEFfRElSIC4gIi9kYXRhL2xvY2FsZS8k
cmVmZXJlbmNlTG9jYWxlL2VtYWlsX3RlbXBsYXRlc19kYXRhLnhtbCIKLQkJKTsKLQkJJGVtYWls
cyA9JiAkeG1sUGFyc2VyLT5wYXJzZSgKLQkJCUlOU1RBTExFUl9EQVRBX0RJUiAuICIvZGF0YS9s
b2NhbGUvJGxvY2FsZS9lbWFpbF90ZW1wbGF0ZXNfZGF0YS54bWwiCi0JCSk7Ci0JCSRlbWFpbHNU
YWJsZSA9JiAkZW1haWxzLT5nZXRDaGlsZEJ5TmFtZSgndGFibGUnKTsKLQkJJHJlZmVyZW5jZUVt
YWlsc1RhYmxlID0mICRyZWZlcmVuY2VFbWFpbHMtPmdldENoaWxkQnlOYW1lKCd0YWJsZScpOwot
CQkkbWF0Y2hlZFJlZmVyZW5jZUVtYWlscyA9IGFycmF5KCk7Ci0KLQkJLy8gUGFzcyAxOiBGb3Ig
YWxsIHRyYW5zbGF0ZWQgZW1haWxzLCBjaGVjayB0aGF0IHRoZXkgbWF0Y2gKLQkJLy8gYWdhaW5z
dCByZWZlcmVuY2UgdHJhbnNsYXRpb25zLgotCQlmb3IgKCRlbWFpbEluZGV4ID0gMDsgKCRlbWFp
bCA9JiAkZW1haWxzVGFibGUtPmdldENoaWxkQnlOYW1lKCdyb3cnLCAkZW1haWxJbmRleCkpICE9
PSBudWxsOyAkZW1haWxJbmRleCsrKSB7Ci0JCQkvLyBFeHRyYWN0IHRoZSBmaWVsZHMgZnJvbSB0
aGUgZW1haWwgdG8gYmUgdGVzdGVkLgotCQkJJGZpZWxkcyA9ICR0aGlzLT5leHRyYWN0RmllbGRz
KCRlbWFpbCk7Ci0KLQkJCS8vIExvY2F0ZSB0aGUgcmVmZXJlbmNlIGVtYWlsIGFuZCBleHRyYWN0
IGl0cyBmaWVsZHMuCi0JCQlmb3IgKCRyZWZlcmVuY2VFbWFpbEluZGV4ID0gMDsgKCRyZWZlcmVu
Y2VFbWFpbCA9JiAkcmVmZXJlbmNlRW1haWxzVGFibGUtPmdldENoaWxkQnlOYW1lKCdyb3cnLCAk
cmVmZXJlbmNlRW1haWxJbmRleCkpICE9PSBudWxsOyAkcmVmZXJlbmNlRW1haWxJbmRleCsrKSB7
Ci0JCQkJJHJlZmVyZW5jZUZpZWxkcyA9ICR0aGlzLT5leHRyYWN0RmllbGRzKCRyZWZlcmVuY2VF
bWFpbCk7Ci0JCQkJaWYgKCRyZWZlcmVuY2VGaWVsZHNbJ2VtYWlsX2tleSddID09ICRmaWVsZHNb
J2VtYWlsX2tleSddKSBicmVhazsKLQkJCX0KLQotCQkJLy8gQ2hlY2sgaWYgYSBtYXRjaGluZyBy
ZWZlcmVuY2UgZW1haWwgd2FzIGZvdW5kLgotCQkJaWYgKCFpc3NldCgkcmVmZXJlbmNlRW1haWwp
IHx8ICRyZWZlcmVuY2VFbWFpbCA9PT0gbnVsbCkgewotCQkJCSRlcnJvcnNbRU1BSUxfRVJST1Jf
RVhUUkFfRU1BSUxdW10gPSBhcnJheSgKLQkJCQkJJ2tleScgPT4gJGZpZWxkc1snZW1haWxfa2V5
J10KLQkJCQkpOwotCQkJCWNvbnRpbnVlOwotCQkJfQotCi0JCQkvLyBXZSd2ZSBzdWNjZXNzZnVs
bHkgZm91bmQgYSBtYXRjaGluZyByZWZlcmVuY2UgZW1haWwuCi0JCQkvLyBDb21wYXJlIGl0IGFn
YWluc3QgdGhlIHRyYW5zbGF0aW9uLgotCQkJJGJvZHlQYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1l
dGVyTmFtZXMoJGZpZWxkc1snYm9keSddKTsKLQkJCSRyZWZlcmVuY2VCb2R5UGFyYW1zID0gJHRo
aXMtPmdldFBhcmFtZXRlck5hbWVzKCRyZWZlcmVuY2VGaWVsZHNbJ2JvZHknXSk7Ci0JCQlpZiAo
JGJvZHlQYXJhbXMgIT09ICRyZWZlcmVuY2VCb2R5UGFyYW1zKSB7Ci0JCQkJJGVycm9yc1tFTUFJ
TF9FUlJPUl9ESUZGRVJJTkdfUEFSQU1TXVtdID0gYXJyYXkoCi0JCQkJCSdrZXknID0+ICRmaWVs
ZHNbJ2VtYWlsX2tleSddLAotCQkJCQknbWlzbWF0Y2gnID0+IGFycmF5X2RpZmYoJGJvZHlQYXJh
bXMsICRyZWZlcmVuY2VCb2R5UGFyYW1zKQotCQkJCSk7Ci0JCQl9Ci0KLQkJCSRzdWJqZWN0UGFy
YW1zID0gJHRoaXMtPmdldFBhcmFtZXRlck5hbWVzKCRmaWVsZHNbJ3N1YmplY3QnXSk7Ci0JCQkk
cmVmZXJlbmNlU3ViamVjdFBhcmFtcyA9ICR0aGlzLT5nZXRQYXJhbWV0ZXJOYW1lcygkcmVmZXJl
bmNlRmllbGRzWydzdWJqZWN0J10pOwotCi0JCQlpZiAoJHN1YmplY3RQYXJhbXMgIT09ICRyZWZl
cmVuY2VTdWJqZWN0UGFyYW1zKSB7Ci0JCQkJJGVycm9yc1tFTUFJTF9FUlJPUl9ESUZGRVJJTkdf
UEFSQU1TXVtdID0gYXJyYXkoCi0JCQkJCSdrZXknID0+ICRmaWVsZHNbJ2VtYWlsX2tleSddLAot
CQkJCQknbWlzbWF0Y2gnID0+IGFycmF5X2RpZmYoJHN1YmplY3RQYXJhbXMsICRyZWZlcmVuY2VT
dWJqZWN0UGFyYW1zKQotCQkJCSk7Ci0JCQl9Ci0KLQkJCSRtYXRjaGVkUmVmZXJlbmNlRW1haWxz
W10gPSAkZmllbGRzWydlbWFpbF9rZXknXTsKLQotCQkJdW5zZXQoJGVtYWlsKTsKLQkJCXVuc2V0
KCRyZWZlcmVuY2VFbWFpbCk7Ci0JCX0KLQotCQkvLyBQYXNzIDI6IE1ha2Ugc3VyZSB0aGF0IHRo
ZXJlIGFyZSBubyBtaXNzaW5nIHRyYW5zbGF0aW9ucy4KLQkJZm9yICgkcmVmZXJlbmNlRW1haWxJ
bmRleCA9IDA7ICgkcmVmZXJlbmNlRW1haWwgPSYgJHJlZmVyZW5jZUVtYWlsc1RhYmxlLT5nZXRD
aGlsZEJ5TmFtZSgncm93JywgJHJlZmVyZW5jZUVtYWlsSW5kZXgpKSAhPT0gbnVsbDsgJHJlZmVy
ZW5jZUVtYWlsSW5kZXgrKykgewotCQkJLy8gRXh0cmFjdCB0aGUgZmllbGRzIGZyb20gdGhlIGVt
YWlsIHRvIGJlIHRlc3RlZC4KLQkJCSRyZWZlcmVuY2VGaWVsZHMgPSAkdGhpcy0+ZXh0cmFjdEZp
ZWxkcygkcmVmZXJlbmNlRW1haWwpOwotCQkJaWYgKCFpbl9hcnJheSgkcmVmZXJlbmNlRmllbGRz
WydlbWFpbF9rZXknXSwgJG1hdGNoZWRSZWZlcmVuY2VFbWFpbHMpKSB7Ci0JCQkJJGVycm9yc1tF
TUFJTF9FUlJPUl9NSVNTSU5HX0VNQUlMXVtdID0gYXJyYXkoCi0JCQkJCSdrZXknID0+ICRyZWZl
cmVuY2VGaWVsZHNbJ2VtYWlsX2tleSddCi0JCQkJKTsKLQkJCX0KLQkJfQotCi0JCSR0aGlzLT5k
aXNwbGF5RW1haWxFcnJvcnMoJGxvY2FsZSwgJGVycm9ycyk7Ci0JfQotCi0JZnVuY3Rpb24gZXh0
cmFjdEZpZWxkcygmJG5vZGUpIHsKLQkJJHJldHVybmVyID0gYXJyYXkoKTsKLQkJZm9yZWFjaCAo
JG5vZGUtPmdldENoaWxkcmVuKCkgYXMgJGZpZWxkKSBpZiAoJGZpZWxkLT5nZXROYW1lKCkgPT09
ICdmaWVsZCcpIHsKLQkJCSRyZXR1cm5lclskZmllbGQtPmdldEF0dHJpYnV0ZSgnbmFtZScpXSA9
ICRmaWVsZC0+Z2V0VmFsdWUoKTsKLQkJfQotCQlyZXR1cm4gJHJldHVybmVyOwotCX0KLQotCWZ1
bmN0aW9uIGRpc3BsYXlFbWFpbEVycm9ycygkbG9jYWxlLCAkZXJyb3JzKSB7Ci0JCWtzb3J0KCRl
cnJvcnMpOwotCQllY2hvICJcbkVSUk9SIFJFUE9SVCBGT1IgRU1BSUxTIElOIFwiJGxvY2FsZVwi
OlxuIjsKLQkJZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7Ci0J
CWZvcmVhY2ggKCRlcnJvcnMgYXMgJHR5cGUgPT4gJGVycm9yTGlzdCkgewotCQkJaWYgKCFlbXB0
eSgkZXJyb3JMaXN0KSkgc3dpdGNoICgkdHlwZSkgewotCQkJCWNhc2UgRU1BSUxfRVJST1JfTUlT
U0lOR19FTUFJTDoKLQkJCQkJZWNobyAiVGhlIGZvbGxvd2luZyBtZXNzYWdlcyBhcmUgbWlzc2lu
ZyBmcm9tIHRoZSBlbWFpbHMgZmlsZSBhbmQgbmVlZCB0cmFuc2xhdGlvbi5cbiI7Ci0JCQkJCWZv
cmVhY2ggKCRlcnJvckxpc3QgYXMgJGVycm9yKSBlY2hvICIgLSAiIC4gJGVycm9yWydrZXknXSAu
ICJcbiI7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgRU1BSUxfRVJST1JfRVhUUkFfRU1BSUw6Ci0J
CQkJCWVjaG8gIlxuVGhlIGZvbGxvd2luZyBlbWFpbHMgYXJlIG5vdCBpbiB0aGUgbWFzdGVyIHRy
YW5zbGF0aW9uIGFuZCBtYXkgYmUgZGVsZXRlZDpcbiI7Ci0JCQkJCWZvcmVhY2ggKCRlcnJvckxp
c3QgYXMgJGVycm9yKSBlY2hvICIgLSAiIC4gJGVycm9yWydrZXknXSAuICJcbiI7Ci0JCQkJCWJy
ZWFrOwotCQkJCWNhc2UgRU1BSUxfRVJST1JfRElGRkVSSU5HX1BBUkFNUzoKLQkJCQkJZWNobyAi
XG5UaGUgZm9sbG93aW5nIGVtYWlscyBhcmUgbWlzc2luZyBwYXJhbWV0ZXJzIG9yIGhhdmUgZXh0
cmEgcGFyYW1ldGVycyBhbmQgbmVlZFxuIjsKLQkJCQkJZWNobyAiY29ycmVjdGluZyBhZ2FpbnN0
IHRoZSBtYXN0ZXIgdHJhbnNsYXRpb246XG4iOwotCQkJCQlmb3JlYWNoICgkZXJyb3JMaXN0IGFz
ICRlcnJvcikgewotCQkJCQkJZWNobyAiIC0gIiAuICRlcnJvclsna2V5J10gLiAiXG4iOwotCQkJ
CQkJZWNobyAiICAgTWlzbWF0Y2hpbmcgcGFyYW1ldGVyKHMpOiAiIC4gaW1wbG9kZSgnLCAnLCAk
ZXJyb3JbJ21pc21hdGNoJ10pIC4gIlxuIjsKLQkJCQkJfQotCQkJCQlicmVhazsKLQkJCQlkZWZh
dWx0OiBkaWUoIlVua25vd24gZXJyb3IgdHlwZSBcIiR0eXBlXCIhXG4iKTsKLQkJCX0KLQkJfQot
CX0KLQotCWZ1bmN0aW9uIHRlc3RMb2NhbGUoJGxvY2FsZSwgJHJlZmVyZW5jZUxvY2FsZSwgJHBs
dWdpbnMpIHsKLQkJJGVycm9ycyA9IGFycmF5KAotCQkJTE9DQUxFX0VSUk9SX01JU1NJTkdfS0VZ
ID0+IGFycmF5KCksCi0JCQlMT0NBTEVfRVJST1JfRVhUUkFfS0VZID0+IGFycmF5KCksCi0JCQlM
T0NBTEVfRVJST1JfU1VTUElDSU9VU19MRU5HVEggPT4gYXJyYXkoKSwKLQkJCUxPQ0FMRV9FUlJP
Ul9ESUZGRVJJTkdfUEFSQU1TID0+IGFycmF5KCkKLQkJKTsKLQotCQkkbG9jYWxlQ2FjaGUgPSYg
TG9jYWxlOjpfZ2V0Q2FjaGUoJGxvY2FsZSk7Ci0JCSRyZWZlcmVuY2VMb2NhbGVDYWNoZSA9JiBM
b2NhbGU6Ol9nZXRDYWNoZSgkcmVmZXJlbmNlTG9jYWxlKTsKLQotCQkkbG9jYWxlQ29udGVudHMg
PSYgJGxvY2FsZUNhY2hlLT5nZXRDb250ZW50cygpOwotCQkkcmVmZXJlbmNlQ29udGVudHMgPSYg
JHJlZmVyZW5jZUxvY2FsZUNhY2hlLT5nZXRDb250ZW50cygpOwotCi0JCS8vIEFkZCBsb2NhbGUg
ZGF0YSBmb3IgcGx1Z2lucwotCQlmb3JlYWNoICgkcGx1Z2lucyBhcyAkcGx1Z2luKSB7Ci0JCQkk
cGx1Z2luQ2FjaGUgPSAkcGx1Z2luLT5fZ2V0Q2FjaGUoJGxvY2FsZSk7Ci0JCQkkcmVmZXJlbmNl
UGx1Z2luQ2FjaGUgPSAkcGx1Z2luLT5fZ2V0Q2FjaGUoJHJlZmVyZW5jZUxvY2FsZSk7Ci0JCQkk
bG9jYWxlQ29udGVudHMgKz0gJHBsdWdpbkNhY2hlLT5nZXRDb250ZW50cygpOwotCQkJJHJlZmVy
ZW5jZUNvbnRlbnRzICs9ICRyZWZlcmVuY2VQbHVnaW5DYWNoZS0+Z2V0Q29udGVudHMoKTsKLQkJ
fQotCi0JCWZvcmVhY2ggKCRyZWZlcmVuY2VDb250ZW50cyBhcyAka2V5ID0+ICRyZWZlcmVuY2VW
YWx1ZSkgewotCQkJaWYgKCFpc3NldCgkbG9jYWxlQ29udGVudHNbJGtleV0pKSB7Ci0JCQkJJGVy
cm9yc1tMT0NBTEVfRVJST1JfTUlTU0lOR19LRVldW10gPSBhcnJheSgKLQkJCQkJJ2tleScgPT4g
JGtleSwKLQkJCQkJJ2xvY2FsZScgPT4gJGxvY2FsZQotCQkJCSk7Ci0JCQkJY29udGludWU7Ci0J
CQl9Ci0JCQkkdmFsdWUgPSAkbG9jYWxlQ29udGVudHNbJGtleV07Ci0KLQkJCS8vIFdhdGNoIGZv
ciBzdXNwaWNpb3VzIGxlbmd0aHMuCi0JCQlpZiAoISR0aGlzLT5jaGVja0xlbmd0aHMoJHJlZmVy
ZW5jZVZhbHVlLCAkdmFsdWUpKSB7Ci0JCQkJJGVycm9yc1tMT0NBTEVfRVJST1JfU1VTUElDSU9V
U19MRU5HVEhdW10gPSBhcnJheSgKLQkJCQkJJ2tleScgPT4gJGtleSwKLQkJCQkJJ2xvY2FsZScg
PT4gJGxvY2FsZSwKLQkJCQkJJ3JlZmVyZW5jZScgPT4gJHJlZmVyZW5jZVZhbHVlLAotCQkJCQkn
dmFsdWUnID0+ICR2YWx1ZQotCQkJCSk7Ci0JCQl9Ci0KLQkJCSRyZWZlcmVuY2VQYXJhbXMgPSAk
dGhpcy0+Z2V0UGFyYW1ldGVyTmFtZXMoJHJlZmVyZW5jZVZhbHVlKTsKLQkJCSRwYXJhbXMgPSAk
dGhpcy0+Z2V0UGFyYW1ldGVyTmFtZXMoJHZhbHVlKTsKLQkJCWlmICgkcmVmZXJlbmNlUGFyYW1z
ICE9PSAkcGFyYW1zKSB7Ci0JCQkJJGVycm9yc1tMT0NBTEVfRVJST1JfRElGRkVSSU5HX1BBUkFN
U11bXSA9IGFycmF5KAotCQkJCQkna2V5JyA9PiAka2V5LAotCQkJCQknbG9jYWxlJyA9PiAkbG9j
YWxlLAotCQkJCQknbWlzbWF0Y2gnID0+IGFycmF5X2RpZmYoJHJlZmVyZW5jZVBhcmFtcywgJHBh
cmFtcykKLQkJCQkpOwotCQkJfQotCQkJLy8gQWZ0ZXIgcHJvY2Vzc2luZyBhIGtleSwgcmVtb3Zl
IGl0IGZyb20gdGhlIGxpc3Q7Ci0JCQkvLyB0aGlzIHdheSwgdGhlIHJlbWFpbmRlciBhdCB0aGUg
ZW5kIG9mIHRoZSBsb29wCi0JCQkvLyB3aWxsIGJlIGV4dHJhIHVubmVjZXNzYXJ5IGtleXMuCi0J
CQl1bnNldCgkbG9jYWxlQ29udGVudHNbJGtleV0pOwotCQl9Ci0KLQkJLy8gTGVmdG92ZXIga2V5
cyBhcmUgZXh0cmFuZW91cy4KLQkJZm9yZWFjaCAoJGxvY2FsZUNvbnRlbnRzIGFzICRrZXkgPT4g
JHZhbHVlKSB7Ci0JCQkkZXJyb3JzW0xPQ0FMRV9FUlJPUl9FWFRSQV9LRVldW10gPSBhcnJheSgK
LQkJCQkna2V5JyA9PiAka2V5LAotCQkJCSdsb2NhbGUnID0+ICRsb2NhbGUKLQkJCSk7Ci0JCX0K
LQotCQkkdGhpcy0+ZGlzcGxheUxvY2FsZUVycm9ycygkbG9jYWxlLCAkZXJyb3JzKTsKLQl9Ci0K
LQlmdW5jdGlvbiBkaXNwbGF5TG9jYWxlRXJyb3JzKCRsb2NhbGUsICRlcnJvcnMpIHsKLQkJa3Nv
cnQoJGVycm9ycyk7Ci0JCWVjaG8gIlxuRVJST1IgUkVQT1JUIEZPUiBMT0NBTEUgU1RSSU5HUyBJ
TiBcIiRsb2NhbGVcIjpcbiI7Ci0JCWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuIjsKLQkJZm9yZWFjaCAoJGVycm9ycyBhcyAkdHlwZSA9PiAkZXJyb3JMaXN0
KSB7Ci0JCQlpZiAoIWVtcHR5KCRlcnJvckxpc3QpKSBzd2l0Y2ggKCR0eXBlKSB7Ci0JCQkJY2Fz
ZSBMT0NBTEVfRVJST1JfTUlTU0lOR19LRVk6Ci0JCQkJCWVjaG8gIlRoZSBmb2xsb3dpbmcga2V5
cyBhcmUgbWlzc2luZyBmcm9tIGEgbG9jYWxlIGZpbGUgYW5kIG5lZWQgdG8gYmUgdHJhbnNsYXRl
ZC5cbiI7Ci0JCQkJCWZvcmVhY2ggKCRlcnJvckxpc3QgYXMgJGVycm9yKSBlY2hvICIgLSAiIC4g
JGVycm9yWydrZXknXSAuICJcbiI7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgTE9DQUxFX0VSUk9S
X0VYVFJBX0tFWToKLQkJCQkJZWNobyAiXG5UaGUgZm9sbG93aW5nIGtleXMgYXJlIG5vdCBpbiB0
aGUgbWFzdGVyIHRyYW5zbGF0aW9uIGFuZCBtYXkgYmUgZGVsZXRlZDpcbiI7Ci0JCQkJCWZvcmVh
Y2ggKCRlcnJvckxpc3QgYXMgJGVycm9yKSBlY2hvICIgLSAiIC4gJGVycm9yWydrZXknXSAuICJc
biI7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgTE9DQUxFX0VSUk9SX1NVU1BJQ0lPVVNfTEVOR1RI
OgotCQkJCQllY2hvICJcblRoZSBmb2xsb3dpbmcga2V5cyBoYXZlIHN1c3BpY2lvdXMgbGVuZ3Ro
cyBjb21wYXJlZCB3aXRoIHRoZSBtYXN0ZXIgdHJhbnNsYXRpb25cbiI7Ci0JCQkJCWVjaG8gImFu
ZCBtYXkgbmVlZCBjaGVja2luZzpcbiI7Ci0JCQkJCWZvcmVhY2ggKCRlcnJvckxpc3QgYXMgJGVy
cm9yKSB7Ci0JCQkJCQkkcmVmZXJlbmNlID0gJHRoaXMtPnRydW5jYXRlKCRlcnJvclsncmVmZXJl
bmNlJ10sIDY1KTsKLQkJCQkJCSR2YWx1ZSA9ICR0aGlzLT50cnVuY2F0ZSgkZXJyb3JbJ3ZhbHVl
J10sIDY1KTsKLQkJCQkJCWVjaG8gIiAtICIgLiAkZXJyb3JbJ2tleSddIC4gIlxuIjsKLQkJCQkJ
CWVjaG8gIiAgIFwiIiAuICRyZWZlcmVuY2UgLiAiXCIgdnMuXG4iOwotCQkJCQkJZWNobyAiICAg
XCIiIC4gJHZhbHVlIC4gIlwiICgkbG9jYWxlKVxuIjsKLQkJCQkJfQotCQkJCQlicmVhazsKLQkJ
CQljYXNlIExPQ0FMRV9FUlJPUl9ESUZGRVJJTkdfUEFSQU1TOgotCQkJCQllY2hvICJcblRoZSBm
b2xsb3dpbmcga2V5cyBhcmUgbWlzc2luZyBwYXJhbWV0ZXJzIG9yIGhhdmUgZXh0cmEgcGFyYW1l
dGVycyBhbmQgbmVlZFxuIjsKLQkJCQkJZWNobyAiY29ycmVjdGluZyBhZ2FpbnN0IHRoZSBtYXN0
ZXIgdHJhbnNsYXRpb246XG4iOwotCQkJCQlmb3JlYWNoICgkZXJyb3JMaXN0IGFzICRlcnJvcikg
ewotCQkJCQkJZWNobyAiIC0gIiAuICRlcnJvclsna2V5J10gLiAiXG4iOwotCQkJCQkJZWNobyAi
ICAgTWlzbWF0Y2hpbmcgcGFyYW1ldGVyKHMpOiAiIC4gaW1wbG9kZSgnLCAnLCAkZXJyb3JbJ21p
c21hdGNoJ10pIC4gIlxuIjsKLQkJCQkJfQotCQkJCQlicmVhazsKLQkJCQlkZWZhdWx0OiBkaWUo
IlVua25vd24gZXJyb3IgdHlwZSBcIiR0eXBlXCIhXG4iKTsKLQkJCX0KLQkJfQotCX0KLQotCWZ1
bmN0aW9uIHRydW5jYXRlKCR2YWx1ZSwgJGxlbmd0aCA9IDgwLCAkZWxsaXBzaXMgPSAnLi4uJykg
ewotCQlpZiAoU3RyaW5nOjpzdHJsZW4oJHZhbHVlKSA+ICRsZW5ndGgpIHsKLQkJCSR2YWx1ZSA9
IFN0cmluZzo6c3Vic3RyKCR2YWx1ZSwgMCwgJGxlbmd0aCAtIFN0cmluZzo6c3RybGVuKCRlbGxp
cHNpcykpOwotCQkJcmV0dXJuICR2YWx1ZSAuICRlbGxpcHNpczsKLQkJfQotCQlyZXR1cm4gJHZh
bHVlOwotCX0KLQotCWZ1bmN0aW9uIGNoZWNrTGVuZ3RocygkcmVmZXJlbmNlLCAkdmFsdWUpIHsK
LQkJJHJlZmVyZW5jZUxlbmd0aCA9IFN0cmluZzo6c3RybGVuKCRyZWZlcmVuY2UpOwotCQkkbGVu
Z3RoID0gU3RyaW5nOjpzdHJsZW4oJHZhbHVlKTsKLQkJJGxlbmd0aERpZmZlcmVuY2UgPSBhYnMo
JHJlZmVyZW5jZUxlbmd0aCAtICRsZW5ndGgpOwotCQlpZiAoJHJlZmVyZW5jZUxlbmd0aCA9PSAw
KSByZXR1cm4gZmFsc2U7Ci0JCWlmICgkbGVuZ3RoRGlmZmVyZW5jZSAvICRyZWZlcmVuY2VMZW5n
dGggPiAxICYmICRsZW5ndGhEaWZmZXJlbmNlID4gMTApIHJldHVybiBmYWxzZTsKLQkJcmV0dXJu
IHRydWU7Ci0JfQotCi0JLyoqCi0JICogR2l2ZW4gYSBsb2NhbGUgc3RyaW5nLCBnZXQgdGhlIGxp
c3Qgb2YgcGFyYW1ldGVyIHJlZmVyZW5jZXMgb2YgdGhlCi0JICogZm9ybSB7JG15UGFyYW1ldGVy
TmFtZX0uCi0JICogQHBhcmFtICRzb3VyY2Ugc3RyaW5nCi0JICogQHJldHVybiBhcnJheQotCSAq
LwotCWZ1bmN0aW9uIGdldFBhcmFtZXRlck5hbWVzKCRzb3VyY2UpIHsKLQkJJG1hdGNoZXMgPSBu
dWxsOwotCQlTdHJpbmc6OnJlZ2V4cF9tYXRjaF9nZXQoJy8oe1wkW159XSt9KS8nIC8qICcve1wk
W159XSt9KS8nICovLCAkc291cmNlLCAkbWF0Y2hlcyk7Ci0JCWFycmF5X3NoaWZ0KCRtYXRjaGVz
KTsgLy8gS25vY2sgdGhlIHRvcCBlbGVtZW50IG9mZiB0aGUgYXJyYXkKLQkJcmV0dXJuICRtYXRj
aGVzOwotCX0KLX0KLQotJHRvb2wgPSBuZXcgbG9jYWxlQ2hlY2soaXNzZXQoJGFyZ3YpID8gJGFy
Z3YgOiBhcnJheSgpKTsKLSR0b29sLT5leGVjdXRlKCk7Ci0KLT8+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>