<?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>128939</bug_id>
          
          <creation_ts>2014-02-17 15:39:13 -0800</creation_ts>
          <short_desc>[WebKit2] Merge WebProcessMac and WebProcessIOS into WebProcessCocoa</short_desc>
          <delta_ts>2014-02-17 16:11:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981677</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-02-17 15:39:13 -0800</bug_when>
    <thetext>[WebKit2] Merge WebProcessMac and WebProcessIOS into WebProcessCocoa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981680</commentid>
    <comment_count>1</comment_count>
      <attachid>224438</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-02-17 15:41:46 -0800</bug_when>
    <thetext>Created attachment 224438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981699</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-02-17 16:11:18 -0800</bug_when>
    <thetext>Committed r164256: &lt;http://trac.webkit.org/changeset/164256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224438</attachid>
            <date>2014-02-17 15:41:46 -0800</date>
            <delta_ts>2014-02-17 15:42:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128939-20140217154145.patch</filename>
            <type>text/plain</type>
            <size>45034</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAyLTE3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYktpdDJdIE1lcmdlIFdlYlByb2Nl
c3NNYWMgYW5kIFdlYlByb2Nlc3NJT1MgaW50byBXZWJQcm9jZXNzQ29jb2EKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODkzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQvcmVtb3ZlIGZpbGVzL2dyb3Vwcy4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICBDaGFuZ2Ugc3RvcFJ1bkxv
b3AoKSB0byBiZSBBcHBLaXQgb25seS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2E6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvaW9zL1dlYlByb2Nlc3NJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgQ29weSBtYWMvV2Vi
UHJvY2Vzc01hYy5tbSB0byBjb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0sIGFuZCBhZGQgI2lmIFVT
RShBUFBLSVQpIHdoZXJlIGFwcHJvcHJpYXRlLgorCiAyMDE0LTAyLTE3ICBTZXJnaW8gQ29ycmVp
YSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2Vz
IG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5z
cGVjdG9yCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjQyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEs
NiBAQAogCQkyREE5NDRBRTE4ODRFOUJBMDBFRDg2REIgLyogV2ViSW5zcGVjdG9yUHJveHlJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRB
QTE4ODRFOUJBMDBFRDg2REIgLyogV2ViSW5zcGVjdG9yUHJveHlJT1MubW0gKi87IH07CiAJCTJE
QTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBQjE4ODRFOUJBMDBFRDg2
REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovOyB9OwogCQkyREE5NDRCMDE4ODRFOUJBMDBFRDg2
REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQ
cm94eUlPUy5tbSAqLzsgfTsKLQkJMkRBOTQ0QjMxODg0RTlFQzAwRUQ4NkRCIC8qIFdlYlByb2Nl
c3NJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REE5NDRCMjE4ODRFOUVDMDBFRDg2REIgLyogV2ViUHJvY2Vzc0lPUy5tbSAqLzsgfTsKIAkJMkRB
OTQ0QjkxODg0RUEzOTAwRUQ4NkRCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QjUxODg0
RUEzNTAwRUQ4NkRCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tICovOyB9OwogCQky
REE5NDRCQTE4ODRFQTNDMDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEI2MTg4NEVBMzUwMEVEODZEQiAv
KiBXZWJQYWdlSU9TLm1tICovOyB9OwogCQkyREE5NDRCRDE4ODUxMUU3MDBFRDg2REIgLyogTmV0
d29ya1Byb2Nlc3NJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREE5NDRCQzE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1MubW0g
Ki87IH07CkBAIC04NzQsNiArODczLDcgQEAKIAkJN0MzRjhDOTAxNzNBRjUyRDAwN0I3RjM5IC8q
IFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi87IH07CiAJCTdDM0Y4QzkxMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mz
RjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggKi87IH07CiAJCTdD
NkQzN0ZDMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2RDM3RkExNzJGNTU1RjAwOUQyODQ3
IC8qIFBhZ2VCYW5uZXJNYWMubW0gKi87IH07CisJCTdDNkU3MEZBMThCMkQ0QTAwMEYyNEUyRSAv
KiBXZWJQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzZFNzBGOTE4QjJENEEwMDBGMjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1t
ICovOyB9OwogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRH
cm91cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cElu
dGVybmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRl
eHRQb2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDQjE2RkVGMTcyNEJBMjMwMDdBMEE5NSAvKiBjb20uYXBwbGUuaXN0LmRz
LmFwcGxlY29ubmVjdC53ZWJwbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmls
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTZGRTIxNzI0QjlCNTAw
N0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBwbGVjb25uZWN0LndlYnBsdWdpbi5zYiAqLzsg
fTsKQEAgLTEwMzMsNyArMTAzMyw2IEBACiAJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBX
S1BhZ2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzJFNkU4RDEx
NDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVl
dWUuY3BwICovOyB9OwogCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3RTEx
NDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi87IH07Ci0JCUJDMzA2NUM0MTI1OTJGODkw
MEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NN
YWMubW0gKi87IH07CiAJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjVGOTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovOyB9OwogCQlCQzMwNjZCRTEyNUE0NDIx
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzgg
LyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDMzA2NkJGMTI1QTQ0
MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQ
cm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTIxODQsNyArMjE4Myw2IEBACiAJCTJEQTk0NEFB
MTg4NEU5QkEwMEVEODZEQiAvKiBXZWJJbnNwZWN0b3JQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclByb3h5SU9TLm1tOyBwYXRo
ID0gaW9zL1dlYkluc3BlY3RvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUGFnZVByb3h5SU9TLm1tOyBw
YXRoID0gaW9zL1dlYlBhZ2VQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByb2Nlc3NQcm94eUlPUy5t
bTsgcGF0aCA9IGlvcy9XZWJQcm9jZXNzUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTJEQTk0NEIyMTg4NEU5RUMwMEVEODZEQiAvKiBXZWJQcm9jZXNzSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vzc0lPUy5tbTsg
cGF0aCA9IGlvcy9XZWJQcm9jZXNzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHlJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eUlPUy5tbTsgcGF0aCA9IGlvcy9XZWJCYWNrRm9yd2FyZExpc3RQcm94eUlPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRC
IC8qIFdlYlBhZ2VJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXZWJQYWdlSU9TLm1tOyBwYXRoID0gaW9zL1dlYlBhZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQTk0NEJDMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vz
c0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQ
cm9jZXNzSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYxOSw2ICsyNjE3LDcgQEAKIAkJ
N0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBs
dWdpbkluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdp
bkluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNkQzN0ZBMTcy
RjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUGFnZUJhbm5lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M2RTcwRjkxOEIyRDRBMDAwRjI0RTJFIC8qIFdlYlByb2Nlc3NDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4
IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3Np
bmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Q0IxNkZFMjE3MjRCOUI1MDA3QTBBOTUgLyogY29tLmFwcGxlLmlzdC5kcy5h
cHBsZWNvbm5lY3Qud2VicGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBs
ZS5pc3QuZHMuYXBwbGVjb25uZWN0LndlYnBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3OTEsNyArMjc5MCw2IEBACiAJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAv
KiBXS1BhZ2VMb2FkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQ
YWdlTG9hZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkU2RTdEMTE0
MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVN
b2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NkI5MTI1QTQzNjMwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlByb2Nlc3Mu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NkJDMTI1QTQ0
MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY4NiwxNCArMzY4NCw2IEBACiAJCQl0YWJX
aWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07Ci0JCTFBNkZBMDFDMTFFMTUyNjMwMERC
MTM3MSAvKiBtYWMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovLAotCQkJ
KTsKLQkJCXBhdGggPSBtYWM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkx
QTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyogUGx1Z2lucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC00MjQyLDcgKzQyMzIsNiBAQAogCQkyREE5NDRCMTE4
ODRFOURGMDBFRDg2REIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQkyREE5NDRCMjE4ODRFOUVDMDBFRDg2REIgLyogV2ViUHJvY2Vzc0lPUy5t
bSAqLywKIAkJCQkzRjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5jcHAgKi8sCiAJCQkJM0Y4ODlEMEUxODg3Njk5QzAwRkVBREFGIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaCAqLywKIAkJCQkzRjg4OUQxMDE4ODc3MTAwMDBGRUFEQUYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTQ4NDAsNiArNDgy
OSwxNCBAQAogCQkJbmFtZSA9IE9yaWdpbkRhdGE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNkU3MEY5MThCMkQ0QTAwMEYy
NEUyRSAvKiBXZWJQcm9jZXNzQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJN0NCMTZGRTExNzI0QjlCNTAwN0Ew
QTk1IC8qIFBsdWdJblNhbmRib3hQcm9maWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC00ODg5LDkgKzQ4ODYsOCBAQAogCQlCQzAzMkQ1QzEwRjQzNkQ1
MDA1OEMxNUEgLyogV2ViUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMkRBOTQ0QjExODg0RTlERjAwRUQ4NkRCIC8qIGlvcyAqLywKLQkJCQk3
NTU0MjJDNTE4MDY0RkZDMDA0NkY2QTggLyogT3JpZ2luRGF0YSAqLywKIAkJCQk1MTJFMzUyQTEz
MEI1NTk5MDBBQkQxOUEgLyogQXBwbGljYXRpb25DYWNoZSAqLywKKwkJCQk3QzZFNzBGODE4QjJE
NDdFMDBGMjRFMkUgLyogY29jb2EgKi8sCiAJCQkJMzMwOTM0NEIxMzE1QjkzQTAwOTdBN0JDIC8q
IENvb2tpZXMgKi8sCiAJCQkJNTEyQTk3NTQxODBERjkyNzAwMzlBMTQ5IC8qIERhdGFiYXNlcyAq
LywKIAkJCQlCQ0FDQzQzQjE2QjI0QzVEMDBCNkUwOTIgLyogRW50cnlQb2ludCAqLywKQEAgLTQ5
MDAsMTAgKzQ4OTYsMTEgQEAKIAkJCQlCQzBFNUZDQjEyRDY5NkREMDAxMkE3MkEgLyogR2VvbG9j
YXRpb24gKi8sCiAJCQkJNTFGQkI5QzExMzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAq
LywKIAkJCQlCQzIwNEVERjExQzgzRTcyMDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCi0J
CQkJMUE2RkEwMUMxMUUxNTI2MzAwREIxMzcxIC8qIG1hYyAqLywKKwkJCQkyREE5NDRCMTE4ODRF
OURGMDBFRDg2REIgLyogaW9zICovLAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJFNCAvKiBN
ZWRpYUNhY2hlICovLAogCQkJCTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAvKiBOZXR3b3JrICov
LAogCQkJCTMxMDk5OTc0MTQ2QzhBQTgwMDI5REVCOSAvKiBOb3RpZmljYXRpb25zIChVc2VyKSAq
LywKKwkJCQk3NTU0MjJDNTE4MDY0RkZDMDA0NkY2QTggLyogT3JpZ2luRGF0YSAqLywKIAkJCQkx
QTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyogUGx1Z2lucyAqLywKIAkJCQkzMzM2NzYyQjEzMEM5
OTc4MDA2QzlERTIgLyogUmVzb3VyY2VDYWNoZSAqLywKIAkJCQkwRjU5NDc4QzE4N0IzQjJBMDA0
Mzc4NTcgLyogU2Nyb2xsaW5nICovLApAQCAtNzU5Miw2ICs3NTg5LDcgQEAKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAorCQkJCTdDNkU3MEZBMThCMkQ0QTAwMEYyNEUyRSAvKiBXZWJQcm9jZXNzQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzVEMjRBMTE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hp
bGRQcm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtODA2Niw3ICs4MDY0LDYgQEAKIAkJCQlCQzlC
QTUwNDE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzNEM0EzQzExMzM5NjBCMDAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0M4MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJN
ZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQky
REE5NDRCMzE4ODRFOUVDMDBFRDg2REIgLyogV2ViUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTMzRDNBM0JBMTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0NBMTMzOTYxNzkwMDcwOUJFNCAvKiBX
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkwOTg1NEVDMTJCQzRFMTcwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODEyMiw3ICs4MTE5LDYgQEAKIAkJCQlCQzMwNjgyNTEyNUE2Qjk0
MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxRjc1MDZCMDE4NTkxNjJDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUU3NDlFQjE4MERCQjk4MDAwODhCQTYg
LyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNz
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQjExMTEyRjVFNEYw
MDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwMzJG
MTgxODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAxNjQyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0
ZXJtaW5hdGUoKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElP
UykKKyNpZiBVU0UoQVBQS0lUKQogICAgIHZpcnR1YWwgdm9pZCBzdG9wUnVuTG9vcCgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAxNjQyNTEpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW06MTY0MjUxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldlYlByb2Nlc3MuaCIKKworI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgi
CisjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJTZWNJdGVtU2hpbS5oIgorI2ltcG9ydCAiV0tG
dWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCisjaW1wb3J0ICJXZWJGcmFtZS5oIgorI2ltcG9y
dCAiV2ViSW5zcGVjdG9yLmgiCisjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9BWE9iamVjdENhY2hlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRm9udC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CisjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VD
YWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8YWxnb3JpdGhtPgorI2ltcG9ydCA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPG1hY2gvaG9zdF9pbmZvLmg+CisjaW1wb3J0
IDxtYWNoL21hY2guaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgorI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDxzdGRpby5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworY29uc3QgQ0ZTdHJpbmdSZWYga0xTQWN0aXZlUGFnZVVzZXJWaXNpYmxlT3JpZ2luc0tl
eSA9IENGU1RSKCJMU0FjdGl2ZVBhZ2VVc2VyVmlzaWJsZU9yaWdpbnNLZXkiKTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBtZW1vcnlTaXplKCkKK3sKKyAgICBzdGF0
aWMgaG9zdF9iYXNpY19pbmZvX2RhdGFfdCBob3N0SW5mbzsKKworICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeKCkgeworICAgICAgICBt
YWNoX3BvcnRfdCBob3N0ID0gbWFjaF9ob3N0X3NlbGYoKTsKKyAgICAgICAgbWFjaF9tc2dfdHlw
ZV9udW1iZXJfdCBjb3VudCA9IEhPU1RfQkFTSUNfSU5GT19DT1VOVDsKKyAgICAgICAga2Vybl9y
ZXR1cm5fdCByID0gaG9zdF9pbmZvKGhvc3QsIEhPU1RfQkFTSUNfSU5GTywgKGhvc3RfaW5mb190
KSZob3N0SW5mbywgJmNvdW50KTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgaG9zdCk7CisKKyAgICAgICAgaWYgKHIgIT0gS0VSTl9TVUNDRVNTKQorICAg
ICAgICAgICAgTE9HX0VSUk9SKCIlcyA6IGhvc3RfaW5mbyglZCkgOiAlcy5cbiIsIF9fRlVOQ1RJ
T05fXywgciwgbWFjaF9lcnJvcl9zdHJpbmcocikpOworICAgIH0pOworCisgICAgcmV0dXJuIGhv
c3RJbmZvLm1heF9tZW07Cit9CisKK3N0YXRpYyB1aW50NjRfdCB2b2x1bWVGcmVlU2l6ZShOU1N0
cmluZyAqcGF0aCkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGlj
dGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmls
ZVN5c3RlbUZvclBhdGg6cGF0aCBlcnJvcjpOVUxMXTsKKyAgICByZXR1cm4gW1tmaWxlU3lzdGVt
QXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1
bnNpZ25lZExvbmdMb25nVmFsdWVdOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0
Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCit7CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBuc3VybENhY2hlRGlyZWN0b3J5ID0gYWRvcHROUygoTlNTdHJpbmcgKilXS0NvcHlGb3Vu
ZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQor
ICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gTlNIb21lRGlyZWN0b3J5KCk7CisKKyAgICAv
LyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRo
ZSByZXBvcnRlZCBieXRlIAorICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBh
IG1lZ2FieXRlIGJvdW5kYXJ5LgorICAgIHVpbnQ2NF90IG1lbVNpemUgPSBtZW1vcnlTaXplKCkg
LyAxMDI0IC8gMTAwMDsKKyAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSB2b2x1bWVGcmVlU2l6
ZShuc3VybENhY2hlRGlyZWN0b3J5LmdldCgpKSAvIDEwMjQgLyAxMDAwOworCisgICAgdW5zaWdu
ZWQgY2FjaGVUb3RhbENhcGFjaXR5ID0gMDsKKyAgICB1bnNpZ25lZCBjYWNoZU1pbkRlYWRDYXBh
Y2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSAwOworICAgIGRv
dWJsZSBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gMDsKKyAgICB1bnNpZ25lZCBw
YWdlQ2FjaGVDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsK
KworICAgIGNhbGN1bGF0ZUNhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgbWVtU2l6ZSwgZGlza0ZyZWVT
aXplLAorICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFjaXR5LCBj
YWNoZU1heERlYWRDYXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKKyAg
ICAgICAgcGFnZUNhY2hlQ2FwYWNpdHksIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVybENhY2hl
RGlza0NhcGFjaXR5KTsKKworCisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0Q2FwYWNpdGllcyhjYWNo
ZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0
eSk7CisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZh
bChkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKKyAgICBwYWdlQ2FjaGUoKS0+c2V0
Q2FwYWNpdHkocGFnZUNhY2hlQ2FwYWNpdHkpOworCisgICAgTlNVUkxDYWNoZSAqbnN1cmxDYWNo
ZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKKworICAgIC8vIEZJWE1FOiBPbmNlIHRo
ZXJlIGlzIG5vIGxvYWRpbmcgYmVpbmcgZG9uZSBpbiB0aGUgV2ViUHJvY2Vzcywgd2Ugc2hvdWxk
IHJlbW92ZSB0aGlzLAorICAgIC8vIGFzIGNhbGxpbmcgW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdIGluaXRpYWxpemVzIHRoZSBjYWNoZSwgd2hpY2ggd2Ugd291bGQgcmF0aGVyIG5vdCBkby4K
KyAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgW25zdXJsQ2FjaGUgc2V0
TWVtb3J5Q2FwYWNpdHk6MF07CisgICAgICAgIFtuc3VybENhY2hlIHNldERpc2tDYXBhY2l0eTow
XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtuc3VybENhY2hlIHNldE1lbW9yeUNh
cGFjaXR5OnVybENhY2hlTWVtb3J5Q2FwYWNpdHldOworICAgIFtuc3VybENhY2hlIHNldERpc2tD
YXBhY2l0eTpzdGQ6Om1heDx1bnNpZ25lZCBsb25nPih1cmxDYWNoZURpc2tDYXBhY2l0eSwgW25z
dXJsQ2FjaGUgZGlza0NhcGFjaXR5XSldOyAvLyBEb24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNo
ZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KK30KKwordm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1Rv
Q2xlYXIpCit7CisgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNvdXJjZUNhY2hl
c09ubHkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHdlJ3JlIHVzaW5nIHRoZSBuZXR3
b3JrIHByb2Nlc3MgdGhlbiBpdCBpcyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0byBjbGVhciB0
aGUgZGlzayBjYWNoZS4KKyAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9jbGVhclJlc291cmNlQ2FjaGVzRGlzcGF0Y2hHcm91cCkKKyAg
ICAgICAgbV9jbGVhclJlc291cmNlQ2FjaGVzRGlzcGF0Y2hHcm91cCA9IGRpc3BhdGNoX2dyb3Vw
X2NyZWF0ZSgpOworCisgICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMobV9jbGVhclJlc291cmNlQ2Fj
aGVzRGlzcGF0Y2hHcm91cCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVV
RV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgW1tOU1VSTENhY2hlIHNoYXJlZFVS
TENhY2hlXSByZW1vdmVBbGxDYWNoZWRSZXNwb25zZXNdOworICAgIH0pOworfQorCitzdGF0aWMg
aWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KE5TQXBwbGljYXRp
b24qLCBTRUwpCit7CisgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmZv
Y3VzZWRXZWJQYWdlKCk7CisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5hY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFtwYWdlLT5hY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnRdOwor
fQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSVBDOjpNZXNzYWdlRGVj
b2RlciYpCit7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworCisgICAgLy8gV2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIGVu
YWJsZWQsIGVhY2ggd2ViIHByb2Nlc3Mgd2FudHMgYSBzdGFuZC1hbG9uZQorICAgIC8vIE5TVVJM
Q2FjaGUsIHdoaWNoIGl0IGNhbiBkaXNhYmxlIHRvIHNhdmUgbWVtb3J5LgorICAgIGlmICghdXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeS5pc051bGwoKSkgeworICAgICAgICAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJM
Q2FjaGU6YWRvcHROUyhbW05TVVJMQ2FjaGUgYWxsb2NdCisgICAgICAgICAgICAgICAgaW5pdFdp
dGhNZW1vcnlDYXBhY2l0eTpwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eQorICAg
ICAgICAgICAgICAgIGRpc2tDYXBhY2l0eTpwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNp
dHkKKyAgICAgICAgICAgICAgICBkaXNrUGF0aDpwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eV0pLmdldCgpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fc2hvdWxkRm9yY2VTY3JlZW5G
b250U3Vic3RpdHV0aW9uID0gcGFyYW1ldGVycy5zaG91bGRGb3JjZVNjcmVlbkZvbnRTdWJzdGl0
dXRpb247CisgICAgRm9udDo6c2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMocGFyYW1ldGVy
cy5zaG91bGRFbmFibGVLZXJuaW5nQW5kTGlnYXR1cmVzQnlEZWZhdWx0ID8gS2VybmluZyB8IExp
Z2F0dXJlcyA6IDApOworCisgICAgaWYgKCFKU0M6Ok9wdGlvbnM6OnVzZUpJVFdhc092ZXJyaWRk
ZW4oKSkKKyAgICAgICAgSlNDOjpPcHRpb25zOjp1c2VKSVQoKSA9IHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlSklUOworCisgICAgaWYgKCFKU0M6Ok9wdGlvbnM6OnVzZUZUTEpJVFdhc092ZXJyaWRk
ZW4oKSkKKyAgICAgICAgSlNDOjpPcHRpb25zOjp1c2VGVExKSVQoKSA9IHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlRlRMOworCisgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBwYXJh
bWV0ZXJzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0LnBvcnQoKTsKKworICAgIG1fcHJlc2Vu
dGVyQXBwbGljYXRpb25QaWQgPSBwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwor
CisgICAgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KHBhcmFtZXRlcnMuYWNjZXNzaWJpbGl0eUVu
aGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWQpOworCisgICAgLy8gcmRhcjovLzkxMTg2MzkgYWNj
ZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQgaW4gTlNBcHBsaWNhdGlvbiBkZWZhdWx0cyB0byB1
c2UgdGhlIGtleVdpbmRvdy4gU2luY2UgdGhlcmUncworICAgIC8vIG5vIHdpbmRvdyBpbiBXSzIs
IE5TQXBwbGljYXRpb24gbmVlZHMgdG8gdXNlIHRoZSBmb2N1c2VkIHBhZ2UncyBmb2N1c2VkIGVs
ZW1lbnQuCisgICAgTWV0aG9kIG1ldGhvZFRvUGF0Y2ggPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhv
ZChbTlNBcHBsaWNhdGlvbiBjbGFzc10sIEBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJ
RWxlbWVudCkpOworICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1BhdGNoLCAo
SU1QKU5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCk7Cit9CisKK3Zv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBOU1N0cmluZyAqYXBw
bGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygi
JUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFy
Z3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWVdOworICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJp
bmdSZWYpYXBwbGljYXRpb25OYW1lKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpCit7CisgICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7CisKKyNpZiBFTkFCTEUoU0VDX0lU
RU1fU0hJTSkKKyAgICBTZWNJdGVtU2hpbTo6c2hhcmVkKCkuaW5pdGlhbGl6ZSh0aGlzKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0b3BSdW5Mb29wKCkKK3sKKyAgICBDaGlsZFBy
b2Nlc3M6OnN0b3BOU0FwcFJ1bkxvb3AoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bVRlcm1pbmF0ZSgpCit7CisgICAgaWYgKG1fY2xlYXJSZXNvdXJjZUNhY2hlc0Rpc3BhdGNoR3Jv
dXApIHsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2NsZWFyUmVzb3VyY2VDYWNoZXNE
aXNwYXRjaEdyb3VwLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAgICAgICBkaXNwYXRjaF9y
ZWxlYXNlKG1fY2xlYXJSZXNvdXJjZUNhY2hlc0Rpc3BhdGNoR3JvdXApOworICAgICAgICBtX2Ns
ZWFyUmVzb3VyY2VDYWNoZXNEaXNwYXRjaEdyb3VwID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JiBzYW5kYm94UGFyYW1ldGVycykKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgVU5VU0VEX1BB
UkFNKHBhcmFtZXRlcnMpOworICAgIFVOVVNFRF9QQVJBTShzYW5kYm94UGFyYW1ldGVycyk7Cisj
ZWxzZQorICAgIC8vIE5lZWQgdG8gb3ZlcmlkZSB0aGUgZGVmYXVsdCwgYmVjYXVzZSBzZXJ2aWNl
IGhhcyBhIGRpZmZlcmVudCBidW5kbGUgSUQuCisgICAgTlNCdW5kbGUgKndlYmtpdDJCdW5kbGUg
PSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07
CisgICAgc2FuZGJveFBhcmFtZXRlcnMuc2V0T3ZlcnJpZGVTYW5kYm94UHJvZmlsZVBhdGgoW3dl
YmtpdDJCdW5kbGUgcGF0aEZvclJlc291cmNlOkAiY29tLmFwcGxlLldlYlByb2Nlc3MiIG9mVHlw
ZTpAInNiIl0pOworCisgICAgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChwYXJhbWV0
ZXJzLCBzYW5kYm94UGFyYW1ldGVycyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVBY3RpdmVQYWdlcygpCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDkwCisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhY3RpdmVQYWdlVVJM
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlcjogbV9wYWdlTWFwKSB7CisgICAgICAg
IFdlYlBhZ2UqIHBhZ2UgPSBpdGVyLnZhbHVlLmdldCgpOworICAgICAgICBXZWJGcmFtZSogbWFp
bkZyYW1lID0gcGFnZS0+bWFpbldlYkZyYW1lKCk7CisgICAgICAgIGlmICghbWFpbkZyYW1lKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFN0cmluZyBtYWluRnJhbWVPcmlnaW5TdHJp
bmc7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbWFpbkZyYW1lT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobWFpbkZyYW1lLT51cmwoKSk7CisgICAgICAg
IGlmICghbWFpbkZyYW1lT3JpZ2luLT5pc1VuaXF1ZSgpKQorICAgICAgICAgICAgbWFpbkZyYW1l
T3JpZ2luU3RyaW5nID0gbWFpbkZyYW1lT3JpZ2luLT50b1Jhd1N0cmluZygpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBVUkwoVVJMKCksIG1haW5G
cmFtZS0+dXJsKCkpLnByb3RvY29sKCkgKyAnOic7IC8vIHRvUmF3U3RyaW5nKCkgaXMgbm90IHN1
cHBvc2VkIHRvIHdvcmsgd2l0aCB1bmlxdWUgb3JpZ2lucywgYW5kIHdvdWxkIGp1c3QgcmV0dXJu
ICI6Ly8iLgorCisgICAgICAgIE5TVVJMICpvcmlnaW5Bc05TVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6bWFpbkZyYW1lT3JpZ2luU3RyaW5nXTsKKyAgICAgICAgLy8gK1tOU1VSTCBVUkxXaXRo
U3RyaW5nOl0gcmV0dXJucyBuaWwgd2hlbiBpdHMgYXJndW1lbnQgaXMgbWFsZm9ybWVkLiBJdCdz
IHVuY2xlYXIgaG93IHdlIGNhbiBwb3NzaWJseSBoYXZlIGEgbWFsZm9ybWVkIFVSTCBoZXJlLAor
ICAgICAgICAvLyBidXQgaXQgaGFwcGVucyBpbiBwcmFjdGljZSBhY2NvcmRpbmcgdG8gPHJkYXI6
Ly9wcm9ibGVtLzE0MTczMzg5Pi4gTGVhdmluZyBhbiBhc3NlcnRpb24gaW4gdG8gY2F0Y2ggYSBy
ZXByb2R1Y2libGUgY2FzZS4KKyAgICAgICAgQVNTRVJUKG9yaWdpbkFzTlNVUkwpOworICAgICAg
ICBOU1N0cmluZyAqdXNlclZpc2libGVPcmlnaW5TdHJpbmcgPSBvcmlnaW5Bc05TVVJMID8gdXNl
clZpc2libGVTdHJpbmcob3JpZ2luQXNOU1VSTCkgOiBAIihudWxsKSI7CisKKyAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGFjdGl2ZVBhZ2VVUkxzLmdldCgpLCB1c2VyVmlzaWJsZU9yaWdpblN0
cmluZyk7CisgICAgfQorICAgIFdLU2V0QXBwbGljYXRpb25JbmZvcm1hdGlvbkl0ZW0oa0xTQWN0
aXZlUGFnZVVzZXJWaXNpYmxlT3JpZ2luc0tleSwgYWN0aXZlUGFnZVVSTHMuZ2V0KCkpOworI2Vu
ZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1jb25zdCBDRlN0cmluZ1JlZiBrTFNBY3RpdmVQYWdlVXNlclZpc2libGVPcmlnaW5zS2V5
ID0gQ0ZTVFIoIkxTQWN0aXZlUGFnZVVzZXJWaXNpYmxlT3JpZ2luc0tleSIpOwotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IG1lbW9yeVNpemUoKQpAQCAtMTQyLDYgKzE0
MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2EKICAgICB9KTsK
IH0KIAorI2lmIFVTRShBUFBLSVQpCiBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxp
dHlGb2N1c2VkVUlFbGVtZW50KE5TQXBwbGljYXRpb24qLCBTRUwpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmZvY3VzZWRXZWJQYWdlKCk7CkBAIC0xNTAsMTQg
KzE0OSwxNyBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiAKICAg
ICByZXR1cm4gW3BhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBhY2Nlc3NpYmlsaXR5
Rm9jdXNlZFVJRWxlbWVudF07CiB9CisjZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIElQQzo6TWVzc2FnZURlY29kZXImKQogeworI2lmIEVOQUJMRShXRUJfUFJP
Q0VTU19TQU5EQk9YKQogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRl
cnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyNlbmRpZgogCiAgICAgLy8gV2hlbiB0aGUgbmV0d29yayBw
cm9jZXNzIGlzIGVuYWJsZWQsIGVhY2ggd2ViIHByb2Nlc3Mgd2FudHMgYSBzdGFuZC1hbG9uZQog
ICAgIC8vIE5TVVJMQ2FjaGUsIHdoaWNoIGl0IGNhbiBkaXNhYmxlIHRvIHNhdmUgbWVtb3J5LgpA
QCAtMTcwLDYgKzE3Miw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHIKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0
ID0gcGFyYW1ldGVycy5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydC5wb3J0KCk7CisgICAgbV9w
cmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9IHBhcmFtZXRlcnMucHJlc2VudGVyQXBwbGljYXRpb25Q
aWQ7CiAgICAgbV9zaG91bGRGb3JjZVNjcmVlbkZvbnRTdWJzdGl0dXRpb24gPSBwYXJhbWV0ZXJz
LnNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbjsKICAgICBGb250OjpzZXREZWZhdWx0
VHlwZXNldHRpbmdGZWF0dXJlcyhwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUtlcm5pbmdBbmRMaWdh
dHVyZXNCeURlZmF1bHQgPyBLZXJuaW5nIHwgTGlnYXR1cmVzIDogMCk7CiAKQEAgLTE3OSwzNyAr
MTgzLDQxIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICBp
ZiAoIUpTQzo6T3B0aW9uczo6dXNlRlRMSklUV2FzT3ZlcnJpZGRlbigpKQogICAgICAgICBKU0M6
Ok9wdGlvbnM6OnVzZUZUTEpJVCgpID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVGVEw7CiAKLSAg
ICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1BvcnQucG9ydCgpOwotCi0gICAgbV9wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9
IHBhcmFtZXRlcnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQ7Ci0KICAgICBzZXRFbmhhbmNlZEFj
Y2Vzc2liaWxpdHkocGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZCk7CiAKKyNpZiBVU0UoQVBQS0lUKQogICAgIC8vIHJkYXI6Ly85MTE4NjM5IGFjY2Vz
c2liaWxpdHlGb2N1c2VkVUlFbGVtZW50IGluIE5TQXBwbGljYXRpb24gZGVmYXVsdHMgdG8gdXNl
IHRoZSBrZXlXaW5kb3cuIFNpbmNlIHRoZXJlJ3MKICAgICAvLyBubyB3aW5kb3cgaW4gV0syLCBO
U0FwcGxpY2F0aW9uIG5lZWRzIHRvIHVzZSB0aGUgZm9jdXNlZCBwYWdlJ3MgZm9jdXNlZCBlbGVt
ZW50LgogICAgIE1ldGhvZCBtZXRob2RUb1BhdGNoID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qo
W05TQXBwbGljYXRpb24gY2xhc3NdLCBAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVs
ZW1lbnQpKTsKICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElN
UClOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5hbWUg
b2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUu
IiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07CiAgICAgV0tTZXRWaXNp
YmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogeworI2lmIFVTRShBUFBLSVQp
CiAgICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShTRUNf
SVRFTV9TSElNKQogICAgIFNlY0l0ZW1TaGltOjpzaGFyZWQoKS5pbml0aWFsaXplKHRoaXMpOwog
I2VuZGlmCiB9CiAKKyNpZiBVU0UoQVBQS0lUKQogdm9pZCBXZWJQcm9jZXNzOjpzdG9wUnVuTG9v
cCgpCiB7CiAgICAgQ2hpbGRQcm9jZXNzOjpzdG9wTlNBcHBSdW5Mb29wKCk7CiB9CisjZW5kaWYK
IAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CkBAIC0yMjIsMjEgKzIz
MCwyMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
IHNhbmRib3hQYXJhbWV0ZXJzKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBVTlVTRURfUEFS
QU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNhbmRib3hQYXJhbWV0ZXJzKTsKLSNl
bHNlCisjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiAgICAgLy8gTmVlZCB0byBvdmVy
aWRlIHRoZSBkZWZhdWx0LCBiZWNhdXNlIHNlcnZpY2UgaGFzIGEgZGlmZmVyZW50IGJ1bmRsZSBJ
RC4KICAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFz
czpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXTsKICAgICBzYW5kYm94UGFyYW1ldGVycy5z
ZXRPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aChbd2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3Vy
Y2U6QCJjb20uYXBwbGUuV2ViUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7CiAKICAgICBDaGlsZFBy
b2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRlcnMsIHNhbmRib3hQYXJhbWV0ZXJzKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOworICAgIFVOVVNFRF9QQVJBTShz
YW5kYm94UGFyYW1ldGVycyk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVB
Y3RpdmVQYWdlcygpCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisjaWYgVVNFKEFQUEtJVCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhY3RpdmVQYWdlVVJMcyA9
IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogICAgIGZvciAoY29uc3QgYXV0byYgaXRlcjogbV9wYWdlTWFwKSB7CiAgICAgICAgIFdl
YlBhZ2UqIHBhZ2UgPSBpdGVyLnZhbHVlLmdldCgpOwpAQCAtMjU4LDcgKzI2Niw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoKQogCiAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShhY3RpdmVQYWdlVVJMcy5nZXQoKSwgdXNlclZpc2libGVPcmlnaW5TdHJpbmcpOwogICAg
IH0KLSAgICBXS1NldEFwcGxpY2F0aW9uSW5mb3JtYXRpb25JdGVtKGtMU0FjdGl2ZVBhZ2VVc2Vy
VmlzaWJsZU9yaWdpbnNLZXksIGFjdGl2ZVBhZ2VVUkxzLmdldCgpKTsKKyAgICBXS1NldEFwcGxp
Y2F0aW9uSW5mb3JtYXRpb25JdGVtKENGU1RSKCJMU0FjdGl2ZVBhZ2VVc2VyVmlzaWJsZU9yaWdp
bnNLZXkiKSwgYWN0aXZlUGFnZVVSTHMuZ2V0KCkpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlByb2Nlc3NJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViUHJvY2Vzc0lPUy5tbQkocmV2aXNpb24g
MTY0MjUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViUHJvY2Vzc0lPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0KLSNpbXBvcnQgIldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hl
c1RvQ2xlYXIpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIElQQzo6TWVzc2FnZURlY29kZXImKQotewotICAgIG1fcHJl
c2VudGVyQXBwbGljYXRpb25QaWQgPSBwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlk
OwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3Qg
Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBh
Z2VzKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01h
Yy5tbQkocmV2aXNpb24gMTY0MjUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgotCi0jaW1w
b3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKLSNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24u
aCIKLSNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQg
IlNlY0l0ZW1TaGltLmgiCi0jaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIK
LSNpbXBvcnQgIldlYkZyYW1lLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKLSNpbXBvcnQg
IldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9PcHRpb25zLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2Fj
aGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVOU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0j
aW1wb3J0IDxhbGdvcml0aG0+Ci0jaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotI2ltcG9y
dCA8bWFjaC9ob3N0X2luZm8uaD4KLSNpbXBvcnQgPG1hY2gvbWFjaC5oPgotI2ltcG9ydCA8bWFj
aC9tYWNoX2Vycm9yLmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHN0ZGlv
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1jb25zdCBDRlN0cmluZ1JlZiBrTFNB
Y3RpdmVQYWdlVXNlclZpc2libGVPcmlnaW5zS2V5ID0gQ0ZTVFIoIkxTQWN0aXZlUGFnZVVzZXJW
aXNpYmxlT3JpZ2luc0tleSIpOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHVpbnQ2
NF90IG1lbW9yeVNpemUoKQotewotICAgIHN0YXRpYyBob3N0X2Jhc2ljX2luZm9fZGF0YV90IGhv
c3RJbmZvOwotCi0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNo
X29uY2UoJm9uY2UsIF4oKSB7Ci0gICAgICAgIG1hY2hfcG9ydF90IGhvc3QgPSBtYWNoX2hvc3Rf
c2VsZigpOwotICAgICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gSE9TVF9CQVNJ
Q19JTkZPX0NPVU5UOwotICAgICAgICBrZXJuX3JldHVybl90IHIgPSBob3N0X2luZm8oaG9zdCwg
SE9TVF9CQVNJQ19JTkZPLCAoaG9zdF9pbmZvX3QpJmhvc3RJbmZvLCAmY291bnQpOwotICAgICAg
ICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBob3N0KTsKLQotICAgICAg
ICBpZiAociAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgICAgICBMT0dfRVJST1IoIiVzIDogaG9z
dF9pbmZvKCVkKSA6ICVzLlxuIiwgX19GVU5DVElPTl9fLCByLCBtYWNoX2Vycm9yX3N0cmluZyhy
KSk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gaG9zdEluZm8ubWF4X21lbTsKLX0KLQotc3RhdGlj
IHVpbnQ2NF90IHZvbHVtZUZyZWVTaXplKE5TU3RyaW5nICpwYXRoKQotewotICAgIE5TRGljdGlv
bmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDpwYXRoIGVycm9yOk5V
TExdOwotICAgIHJldHVybiBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVN
b2RlbCkKLXsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBh
ZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAg
ICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIG5zdXJsQ2FjaGVEaXJlY3Rvcnkg
PSBOU0hvbWVEaXJlY3RvcnkoKTsKLQotICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAw
MCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCi0gICAgLy8gY291
bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCi0gICAgdWlu
dDY0X3QgbWVtU2l6ZSA9IG1lbW9yeVNpemUoKSAvIDEwMjQgLyAxMDAwOwotICAgIHVpbnQ2NF90
IGRpc2tGcmVlU2l6ZSA9IHZvbHVtZUZyZWVTaXplKG5zdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkp
IC8gMTAyNCAvIDEwMDA7Ci0KLSAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOwot
ICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNo
ZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAgZG91YmxlIGRlYWREZWNvZGVkRGF0YURlbGV0aW9u
SW50ZXJ2YWwgPSAwOwotICAgIHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKLSAgICB1
bnNpZ25lZCBsb25nIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxv
bmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwotCi0gICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhj
YWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCi0gICAgICAgIGNhY2hlVG90YWxDYXBh
Y2l0eSwgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsLAotICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSwgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotCi0KLSAgICBtZW1v
cnlDYWNoZSgpLT5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERl
YWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKLSAgICBtZW1vcnlDYWNoZSgpLT5zZXRE
ZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50
ZXJ2YWwpOwotICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShwYWdlQ2FjaGVDYXBhY2l0eSk7
Ci0KLSAgICBOU1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdOwotCi0gICAgLy8gRklYTUU6IE9uY2UgdGhlcmUgaXMgbm8gbG9hZGluZyBiZWluZyBkb25l
IGluIHRoZSBXZWJQcm9jZXNzLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMsCi0gICAgLy8gYXMgY2Fs
bGluZyBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gaW5pdGlhbGl6ZXMgdGhlIGNhY2hlLCB3
aGljaCB3ZSB3b3VsZCByYXRoZXIgbm90IGRvLgotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewotICAgICAgICBbbnN1cmxDYWNoZSBzZXRNZW1vcnlDYXBhY2l0eTowXTsKLSAgICAgICAg
W25zdXJsQ2FjaGUgc2V0RGlza0NhcGFjaXR5OjBdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6dXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eV07Ci0gICAgW25zdXJsQ2FjaGUgc2V0RGlza0NhcGFjaXR5OnN0ZDo6bWF4PHVuc2lnbmVkIGxv
bmc+KHVybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHldKV07IC8v
IERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlIGNo
dXJuLgotfQotCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBpZiAoY2FjaGVzVG9D
bGVhciA9PSBJbk1lbW9yeVJlc291cmNlQ2FjaGVzT25seSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gSWYgd2UncmUgdXNpbmcgdGhlIG5ldHdvcmsgcHJvY2VzcyB0aGVuIGl0IGlzIHRoZSBv
bmx5IG9uZSB0aGF0IG5lZWRzIHRvIGNsZWFyIHRoZSBkaXNrIGNhY2hlLgotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2NsZWFyUmVz
b3VyY2VDYWNoZXNEaXNwYXRjaEdyb3VwKQotICAgICAgICBtX2NsZWFyUmVzb3VyY2VDYWNoZXNE
aXNwYXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7Ci0KLSAgICBkaXNwYXRjaF9n
cm91cF9hc3luYyhtX2NsZWFyUmVzb3VyY2VDYWNoZXNEaXNwYXRjaEdyb3VwLCBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewot
ICAgICAgICBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIHJlbW92ZUFsbENhY2hlZFJlc3Bv
bnNlc107Ci0gICAgfSk7Ci19Ci0KLXN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQoTlNBcHBsaWNhdGlvbiosIFNFTCkKLXsKLSAgICBXZWJQYWdlKiBw
YWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkuZm9jdXNlZFdlYlBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UgfHwgIXBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICByZXR1cm4gW3BhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBhY2Nl
c3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudF07Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikKLXsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJj
ZVBhdGhFeHRlbnNpb25IYW5kbGUpOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICAvLyBX
aGVuIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgZW5hYmxlZCwgZWFjaCB3ZWIgcHJvY2VzcyB3YW50
cyBhIHN0YW5kLWFsb25lCi0gICAgLy8gTlNVUkxDYWNoZSwgd2hpY2ggaXQgY2FuIGRpc2FibGUg
dG8gc2F2ZSBtZW1vcnkuCi0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTphZG9wdE5TKFtbTlNVUkxDYWNoZSBh
bGxvY10KLSAgICAgICAgICAgICAgICBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OnBhcmFtZXRlcnMu
bnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5Ci0gICAgICAgICAgICAgICAgZGlza0NhcGFjaXR5OnBh
cmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eQotICAgICAgICAgICAgICAgIGRpc2tQYXRo
OnBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5XSkuZ2V0KCldOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgbV9zaG91bGRGb3JjZVNjcmVlbkZvbnRTdWJzdGl0dXRpb24gPSBwYXJhbWV0ZXJz
LnNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbjsKLSAgICBGb250OjpzZXREZWZhdWx0
VHlwZXNldHRpbmdGZWF0dXJlcyhwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUtlcm5pbmdBbmRMaWdh
dHVyZXNCeURlZmF1bHQgPyBLZXJuaW5nIHwgTGlnYXR1cmVzIDogMCk7Ci0KLSAgICBpZiAoIUpT
Qzo6T3B0aW9uczo6dXNlSklUV2FzT3ZlcnJpZGRlbigpKQotICAgICAgICBKU0M6Ok9wdGlvbnM6
OnVzZUpJVCgpID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVKSVQ7Ci0KLSAgICBpZiAoIUpTQzo6
T3B0aW9uczo6dXNlRlRMSklUV2FzT3ZlcnJpZGRlbigpKQotICAgICAgICBKU0M6Ok9wdGlvbnM6
OnVzZUZUTEpJVCgpID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVGVEw7Ci0KLSAgICBtX2NvbXBv
c2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1BvcnQucG9ydCgpOwotCi0gICAgbV9wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9IHBhcmFtZXRl
cnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQ7Ci0KLSAgICBzZXRFbmhhbmNlZEFjY2Vzc2liaWxp
dHkocGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCk7
Ci0KLSAgICAvLyByZGFyOi8vOTExODYzOSBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCBp
biBOU0FwcGxpY2F0aW9uIGRlZmF1bHRzIHRvIHVzZSB0aGUga2V5V2luZG93LiBTaW5jZSB0aGVy
ZSdzCi0gICAgLy8gbm8gd2luZG93IGluIFdLMiwgTlNBcHBsaWNhdGlvbiBuZWVkcyB0byB1c2Ug
dGhlIGZvY3VzZWQgcGFnZSdzIGZvY3VzZWQgZWxlbWVudC4KLSAgICBNZXRob2QgbWV0aG9kVG9Q
YXRjaCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKFtOU0FwcGxpY2F0aW9uIGNsYXNzXSwgQHNl
bGVjdG9yKGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KSk7Ci0gICAgbWV0aG9kX3NldElt
cGxlbWVudGF0aW9uKG1ldGhvZFRvUGF0Y2gsIChJTVApTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxp
dHlGb2N1c2VkVUlFbGVtZW50KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJv
Y2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotewotICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5h
bWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07Ci0gICAgV0tTZXRW
aXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwotfQot
Ci12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsKLSAgICBXS0FYUmVnaXN0ZXJSZW1v
dGVBcHAoKTsKLQotI2lmIEVOQUJMRShTRUNfSVRFTV9TSElNKQotICAgIFNlY0l0ZW1TaGltOjpz
aGFyZWQoKS5pbml0aWFsaXplKHRoaXMpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6
c3RvcFJ1bkxvb3AoKQotewotICAgIENoaWxkUHJvY2Vzczo6c3RvcE5TQXBwUnVuTG9vcCgpOwot
fQotCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKLXsKLSAgICBpZiAobV9j
bGVhclJlc291cmNlQ2FjaGVzRGlzcGF0Y2hHcm91cCkgewotICAgICAgICBkaXNwYXRjaF9ncm91
cF93YWl0KG1fY2xlYXJSZXNvdXJjZUNhY2hlc0Rpc3BhdGNoR3JvdXAsIERJU1BBVENIX1RJTUVf
Rk9SRVZFUik7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9jbGVhclJlc291cmNlQ2FjaGVz
RGlzcGF0Y2hHcm91cCk7Ci0gICAgICAgIG1fY2xlYXJSZXNvdXJjZUNhY2hlc0Rpc3BhdGNoR3Jv
dXAgPSAwOwotICAgIH0KLX0KLQotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQYXJhbWV0ZXJzKQotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNhbmRib3hQYXJhbWV0ZXJzKTsKLSNlbHNlCi0gICAgLy8gTmVlZCB0byBvdmVyaWRl
IHRoZSBkZWZhdWx0LCBiZWNhdXNlIHNlcnZpY2UgaGFzIGEgZGlmZmVyZW50IGJ1bmRsZSBJRC4K
LSAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpO
U0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXTsKLSAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRP
dmVycmlkZVNhbmRib3hQcm9maWxlUGF0aChbd2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6
QCJjb20uYXBwbGUuV2ViUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7Ci0KLSAgICBDaGlsZFByb2Nl
c3M6OmluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRlcnMsIHNhbmRib3hQYXJhbWV0ZXJzKTsKLSNl
bmRpZgotfQotCi12b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKLXsKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IGFjdGl2ZVBhZ2VVUkxzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0
YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBpdGVyOiBtX3BhZ2VNYXApIHsKLSAgICAgICAgV2ViUGFnZSogcGFnZSA9IGl0ZXIudmFsdWUu
Z2V0KCk7Ci0gICAgICAgIFdlYkZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluV2ViRnJhbWUo
KTsKLSAgICAgICAgaWYgKCFtYWluRnJhbWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgU3RyaW5nIG1haW5GcmFtZU9yaWdpblN0cmluZzsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBtYWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhtYWluRnJhbWUtPnVybCgpKTsKLSAgICAgICAgaWYgKCFtYWluRnJhbWVPcmlnaW4tPmlzVW5p
cXVlKCkpCi0gICAgICAgICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmln
aW4tPnRvUmF3U3RyaW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1haW5GcmFtZU9y
aWdpblN0cmluZyA9IFVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSkucHJvdG9jb2woKSArICc6
JzsgLy8gdG9SYXdTdHJpbmcoKSBpcyBub3Qgc3VwcG9zZWQgdG8gd29yayB3aXRoIHVuaXF1ZSBv
cmlnaW5zLCBhbmQgd291bGQganVzdCByZXR1cm4gIjovLyIuCi0KLSAgICAgICAgTlNVUkwgKm9y
aWdpbkFzTlNVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzptYWluRnJhbWVPcmlnaW5TdHJpbmdd
OwotICAgICAgICAvLyArW05TVVJMIFVSTFdpdGhTdHJpbmc6XSByZXR1cm5zIG5pbCB3aGVuIGl0
cyBhcmd1bWVudCBpcyBtYWxmb3JtZWQuIEl0J3MgdW5jbGVhciBob3cgd2UgY2FuIHBvc3NpYmx5
IGhhdmUgYSBtYWxmb3JtZWQgVVJMIGhlcmUsCi0gICAgICAgIC8vIGJ1dCBpdCBoYXBwZW5zIGlu
IHByYWN0aWNlIGFjY29yZGluZyB0byA8cmRhcjovL3Byb2JsZW0vMTQxNzMzODk+LiBMZWF2aW5n
IGFuIGFzc2VydGlvbiBpbiB0byBjYXRjaCBhIHJlcHJvZHVjaWJsZSBjYXNlLgotICAgICAgICBB
U1NFUlQob3JpZ2luQXNOU1VSTCk7Ci0gICAgICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZU9yaWdp
blN0cmluZyA9IG9yaWdpbkFzTlNVUkwgPyB1c2VyVmlzaWJsZVN0cmluZyhvcmlnaW5Bc05TVVJM
KSA6IEAiKG51bGwpIjsKLQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYWN0aXZlUGFnZVVS
THMuZ2V0KCksIHVzZXJWaXNpYmxlT3JpZ2luU3RyaW5nKTsKLSAgICB9Ci0gICAgV0tTZXRBcHBs
aWNhdGlvbkluZm9ybWF0aW9uSXRlbShrTFNBY3RpdmVQYWdlVXNlclZpc2libGVPcmlnaW5zS2V5
LCBhY3RpdmVQYWdlVVJMcy5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>
<flag name="review"
          id="248525"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>