<?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>123476</bug_id>
          
          <creation_ts>2013-10-29 15:49:50 -0700</creation_ts>
          <short_desc>Add bindings code for crypto algorithm dictionaries</short_desc>
          <delta_ts>2013-10-31 10:38:26 -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>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>buildbot</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944655</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-29 15:49:50 -0700</bug_when>
    <thetext>We need to convert Algorithm dictionaries to C++ structs/classes, so that we could pass them to DOM code.

This is somewhat complicated due to incompatibilities between Web IDL and WebCrypto (e.g. WebCrypto uses nested dictionaries, which is not allowed, and it also doesn&apos;t describe what exactly to do with missing dictionary elements).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944661</commentid>
    <comment_count>1</comment_count>
      <attachid>215440</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-29 16:07:53 -0700</bug_when>
    <thetext>Created attachment 215440
proposed patch

Will fail to compile, because it depends on other patches. But the code is all disabled anyway, so EWS is not of much use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944663</commentid>
    <comment_count>2</comment_count>
      <attachid>215440</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-29 16:10:50 -0700</bug_when>
    <thetext>Comment on attachment 215440
proposed patch

Attachment 215440 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/17148147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945576</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-31 10:31:31 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r158366&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945580</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-31 10:38:26 -0700</bug_when>
    <thetext>Follow-up in &lt;http://trac.webkit.org/r158367&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215440</attachid>
            <date>2013-10-29 16:07:53 -0700</date>
            <delta_ts>2013-10-31 09:55:36 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>CryptoParameters.txt</filename>
            <type>text/plain</type>
            <size>41806</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTEwLTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBjb2Rl
IGZvciBjcnlwdG8gYWxnb3JpdGhtIGRpY3Rpb25hcmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5IHJl
YWRzIHRoZSBBbGdvcml0aG0sIG11Y2ggbGlrZSBKU0RpY3Rpb25hcnkgZG9lcyBpbgorICAgICAg
ICBzaW1wbGVyIGNhc2VzLiBXZSBzaG91bGQgc2VlIGFib3V0IGJyaW5naW5nIHRoZW0gY2xvc2Vy
IHRvZ2V0aGVyIChwZXJoYXBzIHJlcGxhY2luZworICAgICAgICB3aXRoIGF1dG9nZW5lcmF0ZWQg
Y29kZSkuCisKKyAgICAgICAgKiBjcnlwdG8vcGFyYW1ldGVyczogQWRkZWQuCisgICAgICAgICog
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBjcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmg6
IEFkZGVkLgorICAgICAgICBBZGRlZCBhIGNvdXBsZSBzcGVjaWZpYyBkaWN0aW9uYXJpZXMgYXMg
YW4gZXhhbXBsZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogQWRkZWQgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhhc2hBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFy
YW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3Jl
YXRlUGFyYW1ldGVyc0ZvclNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0
aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yVmVyaWZ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckRpZ2Vz
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0
ZVBhcmFtZXRlcnNGb3JJbXBvcnRLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeS5oOiBBZGRlZC4KKwogMjAxMy0xMC0yOSAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBJbmxpbmVUZXh0Qm94J3MgdGV4dCBw
YWludGluZyB0byBpdCdzIG93biBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU4MjA4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NTU2LDYgKzU1NTYsNyBAQAogCQlFMTgyNThBQzBFRjNDRDcwMDA5MzMyNDIgLyog
SlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJH
bG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCUUxODcwNTYzMTZFNTRBMEQwMDU4NUU5NyAv
KiBNYWluVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi87
IH07CiAJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTg3NzJGMDEyNkUyNjI5MDAz
REQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovOyB9OworCQlFMTlEQTI5QzE4MTg5QUREMDAwODhCQzgg
LyogQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5REEyOUIxODE4OUFERDAwMDg4QkM4IC8qIENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVD
MEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8q
IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUxQTMxNjJFMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUEzMTYyQzEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5n
RXh0cmFzLm1tICovOyB9OwpAQCAtNTYwMyw2ICs1NjA0LDkgQEAKIAkJRTFDNDE2MTcwRjY1NjMx
ODAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM0MTYxNjBGNjU2MzE4MDA5MkQyRkIg
LyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCAqLzsgfTsKIAkJRTFDNERFNjkwRUE3NUMx
RTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNERFNkQwRUE3NUM2
NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi87IH07CisJCUUxQzY1NzEyMTgxNUY5
REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjU3MTAxODE1RjlERDAwMjU2
Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgKi87IH07CisJCUUxQzY1NzEz
MTgxNUY5REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY1NzExMTgxNUY5REQw
MDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuaCAqLzsgfTsKKwkJRTFDNjU3
MUYxODE2RTUwMzAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY1NzFFMTgxNkU1MDMw
MDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmggKi87IH07CiAJCUUxQzhCRTVE
MEU4QkQxNUEwMDY0Q0I3RCAvKiBKU1dvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3Jr
ZXIuY3BwICovOyB9OwogCQlFMUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
QTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFD
QUE1QzYwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNX
b3JrZXIuaCAqLzsgfTsKQEAgLTEyNTQzLDYgKzEyNTQ3LDcgQEAKIAkJRTE4MjU4QUIwRUYzQ0Q3
MDAwOTMzMjQyIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODcwNTYyMTZFNTRBMEQwMDU4NUU5NyAvKiBN
YWluVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhy
ZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJGMDEyNkUyNjI5
MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTlEQTI5
QjE4MTg5QUREMDAwODhCQzggLyogQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
Lmg7IHBhdGggPSBwYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBMTQ3MDcxMTEwMkIxNTAwRUVDMEYzIC8qIENv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQTMxNjJCMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5n
RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNjJDMTM0QkMzMkQw
MDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU5Nyw2ICsxMjYwMiw5IEBACiAJCUUx
QzQxNjE2MEY2NTYzMTgwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNERFNjgwRUE3NUMxRTAw
MjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY3RpdmVET01PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFD
NERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY3RpdmVET01PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMUM2NTcxMDE4MTVGOUREMDAyNTZDREQgLyogSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxQzY1NzExMTgxNUY5REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURp
Y3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9BbGdv
cml0aG1EaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQzY1NzFF
MTgxNkU1MDMwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaDsgcGF0
aCA9IHBhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29u
c3RydWN0b3JzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyog
SlNXb3JrZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXb3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkyMzYs
NiArMTkyNDQsOCBAQAogCQkJCTFDODFCQTA0MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggKi8sCiAJCQkJRTE1N0E4RUUxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlci5jcHAgKi8sCiAJCQkJRTE1N0E4RUYxODE4NTQyNTAwOUY4MjFEIC8q
IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oICovLAorCQkJCUUxQzY1NzEwMTgxNUY5REQwMDI1
NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwICovLAorCQkJCUUxQzY1NzEx
MTgxNUY5REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuaCAqLywKIAkJ
CQlCQ0U0MzhBMTE0MEMwREJGMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCAqLywKIAkJCQlC
Q0U0Mzg5QjE0MEIxQkE3MDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmggKi8sCiAJCQkJOTNCNzBE
NDcwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5jcHAgKi8sCkBAIC0yMDA3MCw2ICsy
MDA4MCwzNiBAQAogCQkJbmFtZSA9IG9iamM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlFMTcyQUY3MTE4MEYzNDM0MDBGQkFEQjkgLyogbWFjICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRTE3MkFGN0MxODBGM0IwRDAwRkJBREI5IC8q
IGFsZ29yaXRobXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJKTsKKwkJCXBhdGggPSBhbGdvcml0aG1zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJRTE5REEyOUQxODE5OTVDRTAwMDg4QkM4IC8qIGtleXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBrZXlzOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRTFDNjU3MTQxODE2MDE1RjAwMjU2Q0RE
IC8qIHBhcmFtZXRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUUxOURBMjlCMTgxODlBREQwMDA4OEJDOCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zLmggKi8sCisJCQkJRTFDNjU3MUUxODE2RTUwMzAwMjU2Q0REIC8qIENyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXMuaCAqLywKKwkJCSk7CisJCQluYW1lID0gcGFyYW1ldGVyczsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAv
KiBUaHJlYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIwMTgyLDYgKzIwMjIyLDEwIEBACiAJCUUxRkY4RjVCMTgwNzM2MkIwMDEzMjY3NCAvKiBjcnlw
dG8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUxNzJB
RjdDMTgwRjNCMEQwMEZCQURCOSAvKiBhbGdvcml0aG1zICovLAorCQkJCUUxOURBMjlEMTgxOTk1
Q0UwMDA4OEJDOCAvKiBrZXlzICovLAorCQkJCUUxNzJBRjcxMTgwRjM0MzQwMEZCQURCOSAvKiBt
YWMgKi8sCisJCQkJRTFDNjU3MTQxODE2MDE1RjAwMjU2Q0REIC8qIHBhcmFtZXRlcnMgKi8sCiAJ
CQkJRTE1N0E4RUExODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlci5jcHAgKi8sCiAJCQkJRTE1N0E4RUIxODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0Fs
Z29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oICovLAogCQkJCUUxNTdBOERDMTgxNzJDMkMwMDlG
ODIxRCAvKiBDcnlwdG9LZXkuaWRsICovLApAQCAtMjE5OTEsNiArMjIwMzUsNyBAQAogCQkJCTA3
OEUwOTM0MTdEMTZCMEIwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzFGQjFBNUIxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxRkIxQTVEMTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rp
b25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFDNjU3MUYxODE2RTUwMzAwMjU2Q0REIC8q
IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QThGMUQ4
MTFBNjk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFENzE5Q0MxODExMDZFMDAwMTZEQzUxIC8q
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjA5NCw2ICsy
MjEzOSw3IEBACiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERPTURPTUltcGxlbWVu
dGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQ0NBOUU4MTVFM0Y2NEMwMDUz
Qzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFQTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUM2NTcxMzE4MTVGOUREMDAyNTZDREQgLyogSlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERFQUExODE3
QTkzREMzMDAwRTA0MzAgLyogU3R5bGVSZXNvbHZlVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ5QTI0NzQxNUI5QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDlBMjQ3NTE1QjlDMkUzMDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQ
b2xpY3lJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzc0Niw2ICsyMzc5Miw3IEBACiAJ
CQkJQkM5NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0VCMTc5QzE0MzM3OUY1MDA1MkVBRTkgLyogUmVuZGVyQm94UmVn
aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxpbmVCcmVhay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE5REEyOUMxODE4OUFERDAw
MDg4QkM4IC8qIENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUE0ODY2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCdXR0b24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRTQ0MTM0MTJGNzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MkYxNDIwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNv
dW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjcwMjEsNiArMjcwNjgsNyBAQAogCQkJCTFBM0ZG
OUMzMTUyNjUzNTkwMDIyODhBMSAvKiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFQTQ4N0YwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTFFRjJDNDE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJGYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQzY1NzEyMTgxNUY5REQwMDI1NkNERCAvKiBK
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQzQkY1
OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVBNTc0RjI0MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCNUI3QTE3MDE3QzEwQUE4MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5oIgorCisj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1ITUFD
LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIgorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlv
bmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImIGFsZ29yaXRobUlkZW50aWZpZXIpCit7Cisg
ICAgLy8gdHlwZWRlZiAoQWxnb3JpdGhtIG9yIERPTVN0cmluZykgQWxnb3JpdGhtSWRlbnRpZmll
cjsKKworICAgIFN0cmluZyBhbGdvcml0aG1OYW1lOworCisgICAgaWYgKHZhbHVlLmlzU3RyaW5n
KCkpCisgICAgICAgIGFsZ29yaXRobU5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgZWxzZSBpZiAodmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAodmFs
dWUuZ2V0T2JqZWN0KCktPmluaGVyaXRzKFN0cmluZ09iamVjdDo6aW5mbygpKSkKKyAgICAgICAg
ICAgIGFsZ29yaXRobU5hbWUgPSBhc1N0cmluZyhhc1N0cmluZ09iamVjdCh2YWx1ZSktPmludGVy
bmFsVmFsdWUoKSktPnZhbHVlKGV4ZWMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXNuJ3QgcGVyZm9ybSBzb21lIGNoZWNrcyBtYW5kYXRlZCBieSBXZWJJ
REwgZm9yIGRpY3Rpb25hcmllczoKKyAgICAgICAgICAgIC8vIC0gbnVsbCBhbmQgdW5kZWZpbmVk
IGlucHV0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgZGljdGlv
bmFyeSB3ZXJlIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIC8vIC0gdW5kZWZpbmVkIGVsZW1lbnRz
IHNob3VsZCBiZSB0cmVhdGVkIGFzIGhhdmluZyBhIGRlZmF1bHQgdmFsdWUsIG9yIGFzIG5vdCBw
cmVzZW50IGlmIHRoZXJlIGlzbid0IHN1Y2g7CisgICAgICAgICAgICAvLyAtIFJlZ0V4cCBhbmQg
RGF0ZSBvYmplY3RzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZGljdGlvbmFyaWVzLgorICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgcGFydGlhbGx5IGJlY2F1c2Ugd2UgZG9u
J3QgaW1wbGVtZW50IGl0IGVsc2V3aGVyZSBpbiBXZWJDb3JlIHlldCwgYW5kIHBhcnRpYWxseSBi
ZWNhdXNlCisgICAgICAgICAgICAvLyBXZWJDcnlwdG8gZG9lc24ndCB5ZXQgY2xlYXJseSBzcGVj
aWZ5IHdoYXQgdG8gZG8gd2l0aCBub24tcHJlc2VudCB2YWx1ZXMgaW4gbW9zdCBjYXNlcyBhbnl3
YXkuCisKKyAgICAgICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIHZhbHVlLmdl
dE9iamVjdCgpKTsKKyAgICAgICAgICAgIGRpY3Rpb25hcnkuZ2V0KCJuYW1lIiwgYWxnb3JpdGht
TmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghYWxnb3JpdGhtTmFtZS5jb250YWlu
c09ubHlBU0NJSSgpKSB7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIUNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
OjpzaGFyZWQoKS5nZXRJZGVudGlmaWVyRm9yTmFtZShhbGdvcml0aG1OYW1lLCBhbGdvcml0aG1J
ZGVudGlmaWVyKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRF
RF9FUlIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBib29sIGdldEhhc2hBbGdvcml0aG0oSlNEaWN0aW9uYXJ5JiBkaWN0aW9u
YXJ5LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJiByZXN1bHQpCit7CisgICAgLy8gRlhJTUU6
IFRlYWNoIEpTRGljdGlvbmFyeSBob3cgdG8gcmV0dXJuIEpTVmFsdWVzLCBhbmQgdXNlIHRoYXQg
dG8gZ2V0IGhhc2ggZWxlbWVudCB2YWx1ZS4KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rp
b25hcnkuZXhlY1N0YXRlKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGRpY3Rpb25hcnkuaW5p
dGlhbGl6ZXJPYmplY3QoKTsKKworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCAiaGFz
aCIpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisKKyAgICBKU1ZhbHVlIGhhc2gg
PSBqc1VuZGVmaW5lZCgpOworICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudGlmaWVyLCBzbG90KSkgeworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGFzaCA9IHNsb3QuZ2V0VmFsdWUo
ZXhlYywgaWRlbnRpZmllcik7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaGFzaC5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVE
X0VSUik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKGV4ZWMsIGhhc2gs
IHJlc3VsdCk7Cit9CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3JlYXRlSG1hY1BhcmFtcyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
SlNEaWN0aW9uYXJ5IGpzRGljdGlvbmFyeShleGVjLCB2YWx1ZS5nZXRPYmplY3QoKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+IHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcz4oKTsKKworICAgIGlmICghZ2V0
SGFzaEFsZ29yaXRobShqc0RpY3Rpb25hcnksIHJlc3VsdC0+aGFzaCkpIHsKKyAgICAgICAgQVNT
RVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgcmV0dXJuIHN0ZDo6bW92ZShyZXN1bHQpOworfQorCitzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNLZXlQYXJhbXMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25hcnkoZXhl
YywgdmFsdWUuZ2V0T2JqZWN0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUhtYWNLZXlQYXJhbXM+KCk7CisKKyAgICBpZiAoIWdldEhhc2hBbGdvcml0aG0oanNEaWN0aW9u
YXJ5LCByZXN1bHQtPmhhc2gpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24o
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJlc3VsdC0+aGFzTGVu
Z3RoID0ganNEaWN0aW9uYXJ5LmdldCgibGVuZ3RoIiwgcmVzdWx0LT5sZW5ndGgpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFt
ZXRlcnNGb3JFbmNyeXB0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLCBKU0M6OkpTVmFsdWUpCit7CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkVDRFNBOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfR0NNOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NG
QjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8xOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzIyNDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkNPTkNBVDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhL
REZfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgorICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRl
cnNGb3JEZWNyeXB0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyLCBKU0M6OkpTVmFsdWUpCit7CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FfT0FFUDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkVDRFNBOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0NNQUM6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfR0NNOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIy
NDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkNPTkNBVDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREZf
Q1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgorICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNG
b3JTaWduKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFs
Z29yaXRobSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81Ogor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgorICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkVDREg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgorICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0dDTToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DRkI6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VS
Uik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhtYWNQYXJhbXMoZXhlYywgdmFs
dWUpOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6REg6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlBCS0RGMjoKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURf
RVJSKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
OjpjcmVhdGVQYXJhbWV0ZXJzRm9yVmVyaWZ5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAg
IHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FFU19QS0NTMV92MV81OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBU1NBX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FfUFNTOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0NCQzoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgorICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUhtYWNQYXJhbXMoZXhlYywgdmFsdWUpOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6REg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV81MTI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gSlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yRGlnZXN0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgSlNDOjpK
U1ZhbHVlKQoreworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgorICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FfUFNTOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UlNBX09BRVA6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0NCQzoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DTUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6REg6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9S
VEVEX0VSUik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjI0OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SEtERl9DVFI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQ
QktERjI6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3Jl
YXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpCit7CisgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3Yx
XzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDoKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6RUNESDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgorICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzIyNDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8yNTY6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkNPTkNBVDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhLREZfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UEJLREYyOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNy
ZWF0ZVBhcmFtZXRlcnNGb3JEZXJpdmVLZXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIsIEpTQzo6SlNWYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGFsZ29yaXRo
bSkgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFf
NToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81
OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOgorICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19HQ006CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfQ0ZCOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkRIOgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzI1NjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SEtERl9DVFI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQ
QktERjI6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3Jl
YXRlUGFyYW1ldGVyc0ZvckRlcml2ZUJpdHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIsIEpTQzo6SlNWYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGFsZ29yaXRo
bSkgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFf
NToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81
OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOgorICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19HQ006CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfQ0ZCOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkRIOgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzI1NjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SEtERl9DVFI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQ
QktERjI6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3Jl
YXRlUGFyYW1ldGVyc0ZvckltcG9ydEtleShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBz
d2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBRVNfUEtDUzFfdjFfNToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
X1BTUzoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOgorICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NUUjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19D
QkM6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CisgICAgICAgIHJldHVybiBjcmVhdGVI
bWFjS2V5UGFyYW1zKGV4ZWMsIHZhbHVlKTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkRIOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfNTEyOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERl9DVFI6CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6CisgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckV4cG9ydEtleShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgSlNDOjpKU1ZhbHVl
KQoreworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpSU0FfUFNTOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
X09BRVA6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NCQzoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19D
TUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6REg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV81MTI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gSlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yV3JhcEtleShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlKQor
eworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FfUFNTOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09B
RVA6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NCQzoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFD
OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6REg6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzM4NDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV81MTI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yVW53cmFwS2V5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpCit7
CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQV9QU1M6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FF
UDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgorICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkFFU19DVFI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfQ0JDOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgorICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhNQUM6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpESDoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMzg0OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzUxMjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkNPTkNBVDoKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREZfQ1RSOgorICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9u
YXJ5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnlfaAorI2RlZmlu
ZSBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnlfaAorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllci5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNWYWx1ZTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOworCitjbGFzcyBK
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGdl
dEFsZ29yaXRobUlkZW50aWZpZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXImKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUGFyYW1ldGVyc0ZvckVuY3J5cHQoSlNDOjpF
eGVjU3RhdGUqLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRl
UGFyYW1ldGVyc0ZvckRlY3J5cHQoSlNDOjpFeGVjU3RhdGUqLCBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUGFyYW1ldGVyc0ZvclNpZ24oSlNDOjpFeGVjU3Rh
dGUqLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUGFyYW1l
dGVyc0ZvclZlcmlmeShKU0M6OkV4ZWNTdGF0ZSosIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiBjcmVhdGVQYXJhbWV0ZXJzRm9yRGlnZXN0KEpTQzo6RXhlY1N0YXRlKiwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVBhcmFtZXRlcnNG
b3JHZW5lcmF0ZUtleShKU0M6OkV4ZWNTdGF0ZSosIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiBjcmVhdGVQYXJhbWV0ZXJzRm9yRGVyaXZlS2V5KEpTQzo6RXhlY1N0YXRl
KiwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVBhcmFtZXRl
cnNGb3JEZXJpdmVCaXRzKEpTQzo6RXhlY1N0YXRlKiwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+IGNyZWF0ZVBhcmFtZXRlcnNGb3JJbXBvcnRLZXkoSlNDOjpFeGVjU3Rh
dGUqLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUGFyYW1l
dGVyc0ZvckV4cG9ydEtleShKU0M6OkV4ZWNTdGF0ZSosIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVQYXJhbWV0ZXJzRm9yV3JhcEtleShKU0M6OkV4ZWNTdGF0
ZSosIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVQYXJhbWV0
ZXJzRm9yVW53cmFwS2V5KEpTQzo6RXhlY1N0YXRlKiwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgSlNDOjpKU1ZhbHVlKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQorI2VuZGlmIC8vIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXNfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
X2gKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zIEZJTkFMIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgeworcHVibGljOgor
ICAgIC8vIFRoZSBpbm5lciBoYXNoIGZ1bmN0aW9uIHRvIHVzZS4KKyAgICBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2g7CisKKyAgICAvLyBUaGUgbGVuZ3RoIChpbiBieXRlcykgb2YgdGhl
IGtleSB0byBnZW5lcmF0ZS4gSWYgdW5zcGVjaWZpZWQsIHRoZSByZWNvbW1lbmRlZCBsZW5ndGgg
d2lsbCBiZSB1c2VkLAorICAgIC8vIHdoaWNoIGlzIHRoZSBzaXplIG9mIHRoZSBhc3NvY2lhdGVk
IGhhc2ggZnVuY3Rpb24ncyBibG9jayBzaXplLgorICAgIGJvb2wgaGFzTGVuZ3RoOworICAgIHVu
c2lnbmVkIGxlbmd0aDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQorI2VuZGlmIC8vIENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXNfaApJbmRleDogU291cmNl
L1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9w
YXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0aG1IbWFjUGFy
YW1zX2gKKyNkZWZpbmUgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc19oCisKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycy5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyBGSU5BTCA6IHB1YmxpYyBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgaW5uZXIgaGFz
aCBmdW5jdGlvbiB0byB1c2UuCisgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOwor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCisjZW5kaWYgLy8gQ3J5
cHRvQWxnb3JpdGhtSG1hY1BhcmFtc19oCg==
</data>
<flag name="review"
          id="238169"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="238171"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>