<?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>27407</bug_id>
          
          <creation_ts>2009-07-18 00:29:53 -0700</creation_ts>
          <short_desc>[V8] Revert incomplete patch</short_desc>
          <delta_ts>2009-07-20 09:55:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>eroman</cc>
    
    <cc>jens</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132866</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-18 00:29:53 -0700</bug_when>
    <thetext>Revert https://bugs.webkit.org/show_bug.cgi?id=27383

It&apos;s missing a file and we want the canaries to be green over the weekend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132867</commentid>
    <comment_count>1</comment_count>
      <attachid>33012</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-18 00:31:20 -0700</bug_when>
    <thetext>Created attachment 33012
v1

Revert Jens&apos; patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132869</commentid>
    <comment_count>2</comment_count>
      <attachid>33013</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-18 00:36:08 -0700</bug_when>
    <thetext>Created attachment 33013
now with changelog!

add a change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132870</commentid>
    <comment_count>3</comment_count>
      <attachid>33013</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-18 00:38:26 -0700</bug_when>
    <thetext>Comment on attachment 33013
now with changelog!

jorlow certifies that this is a revert of a previous patch.  I apply the rubber stamp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133067</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 20:38:13 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/46087

Please resolve the bug after committing the patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133153</commentid>
    <comment_count>5</comment_count>
      <attachid>33090</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-20 09:39:42 -0700</bug_when>
    <thetext>Created attachment 33090
patch, with missing file added

Added the missing WebCore/bindings/v8/custom/V8DataGridColumnListCustom.cpp; sorry about that.
This patch is up to date with the current r46125.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133156</commentid>
    <comment_count>6</comment_count>
      <attachid>33090</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-20 09:45:49 -0700</bug_when>
    <thetext>Comment on attachment 33090
patch, with missing file added

I don&apos;t have review rights.  I think it&apos;s best for everyone if you leave off the requestee since really any reviewer could r+ this for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133158</commentid>
    <comment_count>7</comment_count>
      <attachid>33090</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 09:55:25 -0700</bug_when>
    <thetext>Comment on attachment 33090
patch, with missing file added

The patch is about fixing bug 27383, so it should be added to that bug.  (Plus you&apos;d want to re-open any bug that has a new patch on it and clear the r+ from any old patches.)

*Also* in WebCore/bindings/v8/V8DataGridDataSource.cpp, this is missing a &quot;//&quot;:  #endif ENABLE(DATAGRID)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33012</attachid>
            <date>2009-07-18 00:31:20 -0700</date>
            <delta_ts>2009-07-18 00:36:08 -0700</delta_ts>
            <desc>v1</desc>
            <filename>revert.v1.patch</filename>
            <type>text/plain</type>
            <size>41320</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiA0NjA4NikKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC02MDMsNyArNjAzLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3RydWN0b3IuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwJywK
QEAgLTY5NCw4ICs2OTMsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OERhdGFHcmlkRGF0YVNvdXJjZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTU1h
cC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA0NjA4NikKKysrIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAg
LTI0MywxOCArMjQzLDYgQEAgc3ViIEdldEltcGxlbWVudGF0aW9uRmlsZU5hbWUKICAgICByZXR1
cm4gIiR7aWZhY2V9LmgiOwogfQogCi0jIElmIHRoZSBub2RlIGhhcyBhIFtDb25kaXRpb25hbD1Y
WFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhYWCkiIHN0cmluZyBmb3IgdXNlIGlu
IGFuICNpZi4KLXN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nCi17Ci0gICAgbXkgJG5vZGUg
PSBzaGlmdDsKLSAgICBteSAkY29uZGl0aW9uYWwgPSAkbm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbmRpdGlvbmFsIn07Ci0gICAgaWYgKCRjb25kaXRpb25hbCkgewotICAgICAgICByZXR1
cm4gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9u
YWwpKSAuICIpIjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQotfQot
CiBzdWIgR2VuZXJhdGVIZWFkZXIKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CkBAIC0yNjks
MTIgKzI1NywxNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAkY29kZUdlbmVyYXRvci0+QWRk
TWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xhc3NlcygkZGF0YU5vZGUp
OwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwotICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKKyAgICBteSAkY29uZGl0aW9uYWwgPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OwogCiAgICAgIyAt
IEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAgIEBoZWFkZXJDb250ZW50ID0gc3BsaXQo
IlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKIAotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIGlmICgkY29uZGl0aW9uYWwpIHsKKyAgICAgICAg
JGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3Bs
aXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpOworICAgIH0KKwogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcbiNpZm5kZWYgJGNsYXNzTmFtZSIgLiAiX0giKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiXG4jZGVmaW5lICRjbGFzc05hbWUiIC4gIl9IXG5cbiIpOwogCkBA
IC0zMTcsNyArMzEwLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAkY2xhc3NOYW1lIiAuICJfSFxu
Iik7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25h
bDsKIH0KIAogCkBAIC05MTAsMTM4ICs5MDMsMTM0IEBAIHN1YiBHZW5lcmF0ZUJhdGNoZWRBdHRy
aWJ1dGVEYXRhCiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxMX0NBTl9XUklU
RSI7CiAgICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0
eSJ9KSB7CiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxMX0NBTl9SRUFEIjsK
LSAgICAgICAgICAgIGlmICghKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEo
JGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9KSkgewotICAgICAgICAgICAgICAgICRhY2Nlc3NDb250
cm9sIC49ICJ8djg6OkFMTF9DQU5fV1JJVEUiOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAg
ICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBST0hJQklUU19PVkVSV1JJVElORyI7CisgICAg
ICAgIGlmICghKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQt
PnsiVjhSZWFkT25seSJ9KSkgeworICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6
QUxMX0NBTl9XUklURSI7CiAgICAgICAgIH0KLSAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAic3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIpIjsKLQot
ICAgICAgICBteSAkY3VzdG9tQWNjZXNzb3IgPQotICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3Vz
dG9tIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8Ci0gICAg
ICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fAotICAgICAgICAgICAgJGF0dHJF
eHQtPnsiVjhDdXN0b20ifSB8fAotICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0
ZXIifSB8fAotICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fAotICAg
ICAgICAgICAgIiI7Ci0gICAgICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgewotICAgICAg
ICAgICAgIyB1c2UgdGhlIG5hbWluZyBjb252ZW5zaW9uLCBpbnRlcmZhY2UgKyAoY2FwaXRhbGl6
ZSkgYXR0ciBuYW1lCi0gICAgICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFt
ZSAuIFdLX3VjZmlyc3QoJGF0dHJOYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIG15ICRnZXR0
ZXI7Ci0gICAgICAgIG15ICRzZXR0ZXI7Ci0gICAgICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6Tm9u
ZSI7Ci0gICAgICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAwOwotCi0gICAgICAgICMgQ2hlY2sg
YXR0cmlidXRlcy4KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKLSAgICAg
ICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpEb250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgewotICAgICAgICAgICAgJHBy
b3BBdHRyIC49ICJ8djg6OkRvbnREZWxldGUiOwotICAgICAgICB9Ci0KLSAgICAgICAgbXkgJG9u
X3Byb3RvID0gIjAgLyogb24gaW5zdGFuY2UgKi8iOwotICAgICAgICBteSAkZGF0YSA9ICJWOENs
YXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5ERVggLyogbm8gZGF0YSAqLyI7Ci0KLSAgICAgICAg
IyBDb25zdHJ1Y3RvcgotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvKSB7Ci0gICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNv
ZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0g
ICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAg
ICAgICBteSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOwotICAgICAg
ICAgICAgJGRhdGEgPSAiVjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsKLSAgICAg
ICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2ludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3JHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAg
ICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwotCi0gICAgICAgICMgRXZlbnRMaXN0
ZW5lcnMKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJF
dmVudExpc3RlbmVyIikgewotICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5k
b3dFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICAgICAgJHNldHRlciA9
ICJWOEN1c3RvbTo6djhET01XaW5kb3dFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7Ci0gICAg
ICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCIgfHwgJGludGVyZmFj
ZU5hbWUgZXEgIkRvY3VtZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEJvZHlFbGVtZW50
IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIiB8fCAkaW50ZXJmYWNl
TmFtZSBlcSAiSFRNTEZyYW1lU2V0RWxlbWVudCIpIHsKLSAgICAgICAgICAgICAgICAkZ2V0dGVy
ID0gIlY4Q3VzdG9tOjp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAg
ICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNj
ZXNzb3JTZXR0ZXIiOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkZ2V0
dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRh
dHRyTmFtZSBlcSAic2VsZiIpIHsKLSAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICIwIjsK
LSAgICAgICAgICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3Rv
bTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9CisgICAgfQorICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hh
ZG93aW5nIn0pIHsKKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09W
RVJXUklUSU5HIjsKKyAgICB9CisgICAgJGFjY2Vzc0NvbnRyb2wgPSAic3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIpIjsKIAotICAgICAgICAjIEN1
c3RvbSBHZXR0ZXIgYW5kIFNldHRlcgotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0
b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CisgICAgbXkgJGN1c3RvbUFjY2Vzc29y
ID0KKyAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsi
Q3VzdG9tU2V0dGVyIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwK
KyAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fAorICAgICAgICAkYXR0ckV4dC0+eyJW
OEN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0g
fHwKKyAgICAgICAgIiI7CisgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7CisgICAgICAg
ICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0
dHIgbmFtZQorICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuIFdLX3Vj
Zmlyc3QoJGF0dHJOYW1lKTsKKyAgICB9CisKKyAgICBteSAkZ2V0dGVyOworICAgIG15ICRzZXR0
ZXI7CisgICAgbXkgJHByb3BBdHRyID0gInY4OjpOb25lIjsKKyAgICBteSAkaGFzQ3VzdG9tU2V0
dGVyID0gMDsKKworICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KKyAgICBpZiAoJGF0dHJFeHQtPnsi
RG9udEVudW0ifSkgeworICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOworICAg
IH0KKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAgICAg
ICRwcm9wQXR0ciAuPSAifHY4OjpEb250RGVsZXRlIjsKKyAgICB9CisKKyAgICBteSAkb25fcHJv
dG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7CisgICAgbXkgJGRhdGEgPSAiVjhDbGFzc0luZGV4
OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOworCisgICAgIyBDb25zdHJ1Y3Rv
cgorICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8p
IHsKKyAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAkY29uc3RydWN0b3JU
eXBlID1+IHMvQ29uc3RydWN0b3IkLy87CisgICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4ID0g
dWMoJGNvbnN0cnVjdG9yVHlwZSk7CisgICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6JHtj
b25zdHJ1Y3RvckluZGV4fSI7CisgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUlu
dGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIiOworICAgICAgICAkc2V0
dGVyID0gIjAiOworICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKKworICAgICMg
RXZlbnRMaXN0ZW5lcnMKKyAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUg
ZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IikgeworICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5kb3dF
dmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3Vz
dG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yU2V0dGVyIjsKKyAgICAgICAgfSBl
bHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJE
b2N1bWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxCb2R5RWxlbWVudCIgfHwgJGludGVy
ZmFjZU5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxGcmFtZVNldEVsZW1lbnQiKSB7CisgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2
OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVy
ID0gIlY4Q3VzdG9tOjp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9t
QWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgewogICAgICAgICAg
ICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpS
ZWFkT25seSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRoYXNDdXN0
b21TZXR0ZXIgPSAxOwogICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtj
dXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CiAgICAgICAgICAgICB9CisgICAgICAgIH0K
IAotICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsi
Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSkgewotICAgICAg
ICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50
ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAg
ICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7
Ci0KLSAgICAgICAgIyBDdXN0b20gR2V0dGVyCi0gICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57
IkN1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7
Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIk
e2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAg
ICAgIyBSZXBsYWNlYWJsZQotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJs
ZSJ9KSB7Ci0gICAgICAgICAgICAjIFJlcGxhY2VhYmxlIGFjY2Vzc29yIGlzIHB1dCBvbiBpbnN0
YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICRnZXR0
ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwor
ICAgICMgQ3VzdG9tIEdldHRlciBhbmQgU2V0dGVyCisgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsi
Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgeworICAgICAgICAkZ2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkYXR0ck5hbWUgZXEgInNl
bGYiKSB7CiAgICAgICAgICAgICAkc2V0dGVyID0gIjAiOwotCi0gICAgICAgICAgICAjIE1hcmsg
dG8gYXZvaWQgZHVwbGljYXRlIHY4OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCi0gICAgICAg
ICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKLQotICAgICAgICAgICAgIyBIYW5kbGUgdGhlIHNw
ZWNpYWwgY2FzZSBvZiB3aW5kb3cudG9wIGJlaW5nIG1hcmtlZCB1cHN0cmVhbSBhcyBSZXBsYWNl
YWJsZS4KLSAgICAgICAgICAgICMgRklYTUU6IEludmVzdGlnYXRlIHdoeSBbUmVwbGFjZWFibGVd
IGlzIG5vdCBtYXJrZWQgYXMgUmVhZE9ubHkKLSAgICAgICAgICAgICMgdXBzdHJlYW0gYW5kIHJl
YWNoIHBhcml0eS4KLSAgICAgICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciIGFuZCAkYXR0ck5hbWUgZXEgInRvcCIpKSB7Ci0gICAgICAgICAgICAgICAgJHByb3BBdHRy
IC49ICJ8djg6OlJlYWRPbmx5IjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAjIE5vcm1hbAor
ICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRy
TmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXIiOworICAgICAgICAgICAgJGhhc0N1c3Rv
bVNldHRlciA9IDE7CisgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9t
QWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCRhdHRy
RXh0LT57IlJlcGxhY2VhYmxlIn0gJiYgISRoYXNDdXN0b21TZXR0ZXIpIHsKLSAgICAgICAgICAg
ICRzZXR0ZXIgPSAiMCI7CisgICAgIyBDdXN0b20gU2V0dGVyCisgICAgfSBlbHNpZiAoJGF0dHJF
eHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSkgewor
ICAgICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKKyAgICAgICAgJGdldHRlciA9ICIke2ludGVy
ZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAgICRzZXR0
ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CisKKyAg
ICAjIEN1c3RvbSBHZXR0ZXIKKyAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIi
fSkgeworICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNj
ZXNzb3JHZXR0ZXIiOworICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5h
bDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKKworICAgICMgUmVwbGFjZWFibGUKKyAgICB9IGVs
c2lmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CisgICAgICAgICMgUmVwbGFjZWFibGUg
YWNjZXNzb3IgaXMgcHV0IG9uIGluc3RhbmNlIHRlbXBsYXRlIHdpdGggUmVhZE9ubHkgYXR0cmli
dXRlLgorICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRy
TmFtZX1BdHRyR2V0dGVyIjsKKyAgICAgICAgJHNldHRlciA9ICIwIjsKKworICAgICAgICAjIE1h
cmsgdG8gYXZvaWQgZHVwbGljYXRlIHY4OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCisgICAg
ICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOworCisgICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFs
IGNhc2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgdXBzdHJlYW0gYXMgUmVwbGFjZWFibGUu
CisgICAgICAgICMgRklYTUU6IEludmVzdGlnYXRlIHdoeSBbUmVwbGFjZWFibGVdIGlzIG5vdCBt
YXJrZWQgYXMgUmVhZE9ubHkKKyAgICAgICAgIyB1cHN0cmVhbSBhbmQgcmVhY2ggcGFyaXR5Lgor
ICAgICAgICBpZiAoISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1l
IGVxICJ0b3AiKSkgewogICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsK
ICAgICAgICAgfQogCi0gICAgICAgICMgUmVhZCBvbmx5IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwgJGF0dHJFeHQtPnsiVjhSZWFkT25s
eSJ9KSB7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAgICB9CisgICAgIyBOb3Jt
YWwKKyAgICB9IGVsc2UgeworICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRl
cm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKKyAgICAgICAgJHNldHRlciA9ICIke2ludGVy
ZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7CisgICAgfQogCi0gICAg
ICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJvdG8KLSAgICAgICAg
aWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7Ci0gICAgICAgICAgICAkb25fcHJvdG8gPSAi
MSAvKiBvbiBwcm90byAqLyI7Ci0gICAgICAgIH0KKyAgICBpZiAoJGF0dHJFeHQtPnsiUmVwbGFj
ZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikgeworICAgICAgICAkc2V0dGVyID0gIjAiOwor
ICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOworICAgIH0KIAotICAgICAgICBt
eSAkY29tbWVudEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRhdHRy
aWJ1dGUtPnR5cGUgLgotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAnIiAu
IGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwotICAgICAgICAKLSAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlLT5zaWduYXR1cmUpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgIyBSZWFkIG9u
bHkgYXR0cmlidXRlcworICAgIGlmICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8
ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAkc2V0dGVyID0gIjAiOworICAg
IH0KIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICMgQW4gYWNjZXNz
b3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJvdG8KKyAgICBpZiAoJGF0dHJFeHQtPnsidjhP
blByb3RvIn0pIHsKKyAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8gKi8iOworICAg
IH0KKworICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1dGUgJyRhdHRyTmFtZScgKFR5cGU6
ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCisgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0
cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwogICAvLyAkY29tbWVudEluZm8KICAgeyAiJGF0dHJOYW1lIiwK
ICAgICAkZ2V0dGVyLApAQCAtMTA1MSw3ICsxMDQwLDYgQEAgc3ViIEdlbmVyYXRlQmF0Y2hlZEF0
dHJpYnV0ZURhdGEKICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9w
QXR0ciksCiAgICAgJG9uX3Byb3RvIH0sCiBFTkQKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogICAgIH0KIH0KIApAQCAtMTA2Niw3ICsxMDU0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBteSAkY2xhc3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZSgkaW50ZXJmYWNlTmFtZSkpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwotICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKKyAg
ICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25k
aXRpb25hbCJ9OwogCiAgICAgQGFsbFBhcmVudHMgPSAkY29kZUdlbmVyYXRvci0+RmluZFBhcmVu
dHNSZWN1cnNpdmVseSgkZGF0YU5vZGUpOwogCkBAIC0xMDc5LDcgKzEwNjcsMTEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZy5oXCJc
blxuIiAuCiAgICAgICAgICAiI3VuZGVmIExPR1xuXG4iKTsKIAotICAgIHB1c2goQGltcGxGaXhl
ZEhlYWRlciwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKKyAgICBteSAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgaWYgKCRjb25kaXRpb25h
bCkgeworICAgICAgICAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYm
IEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOworICAgICAgICBwdXNo
KEBpbXBsRml4ZWRIZWFkZXIsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKKyAg
ICB9CiAKICAgICBpZiAoJGNsYXNzTmFtZSA9fiAvXlY4U1ZHQW5pbWF0ZWQvKSB7CiAgICAgICAg
IEFkZEluY2x1ZGVzRm9yU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKTsKQEAgLTEzOTUs
NyArMTM4Nyw3IEBAIEVORAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogRU5ECiAKLSAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsOwogfQogCiAKQEAgLTIwNDgs
OCArMjA0MCw4IEBAIHN1YiBSZXR1cm5OYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAgICBpZiAo
JHR5cGUgZXEgIlJHQkNvbG9yIikgewotICAgICAgICBteSAkY29uc3RydWN0ID0gIlJlZlB0cjxS
R0JDb2xvcj4gcmdiY29sb3IgPSBSR0JDb2xvcjo6Y3JlYXRlKCR2YWx1ZSk7XG4iOwotICAgICAg
ICBteSAkY29udmVydCA9ICJWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJ
bmRleDo6UkdCQ09MT1IsIFdURjo6Z2V0UHRyKHJnYmNvbG9yKSkiOworICAgICAgICBteSAkY29u
c3RydWN0ID0gIlJlZlB0cjxSR0JDb2xvcj4gcmdiY29sb3IgPSBSR0JDb2xvcjo6Y3JlYXRlKCR2
YWx1ZSk7XG4iOw0KKyAgICAgICAgbXkgJGNvbnZlcnQgPSAiVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlJHQkNPTE9SLCBXVEY6OmdldFB0cihyZ2Jjb2xvcikp
IjsNCiAgICAgICAgIHJldHVybiAkY29uc3RydWN0IC4gJGluZGVudCAuICJyZXR1cm4gIiAuICRj
b252ZXJ0OwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5j
bHVkZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaAkocmV2aXNpb24gNDYwODYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJ
bmNsdWRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYgQEAKICNpbmNsdWRlICJY
UGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFJlc3VsdC5oIgogCi0jaWYgRU5BQkxF
KERBVEFHUklEKQotI2luY2x1ZGUgIkRhdGFHcmlkQ29sdW1uLmgiCi0jaW5jbHVkZSAiRGF0YUdy
aWRDb2x1bW5MaXN0LmgiCi0jZW5kaWYgLy8gREFUQUdSSUQKLQogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA0NjA4NikKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUyLDEzICs0NTIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhE
CiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkNMSUVOVFJFQ1RMSVNUOgogICAgICAgICBkZXNjcmlw
dG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lO
REVYRURfUFJPUEVSVFlfR0VUVEVSKENsaWVudFJlY3RMaXN0KSk7CiAgICAgICAgIGJyZWFrOwot
I2lmIEVOQUJMRShEQVRBR1JJRCkKLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6REFUQUdSSURDT0xV
TU5MSVNUOgotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4
ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29s
dW1uTGlzdCkpOwotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5h
bWVkUHJvcGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1
bW5MaXN0KSk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICBkZWZhdWx0OgorICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzk1LDE4ICs3ODksNyBAQCBib29s
IFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHY4OjpICiAjZGVmaW5lIEZPUl9FQUNIX1ZJ
REVPX1RBRyhtYWNybykKICNlbmRpZgogCi0jaWYgRU5BQkxFKERBVEFHUklEKQotI2RlZmluZSBG
T1JfRUFDSF9EQVRBR1JJRF9UQUcobWFjcm8pICAgICAgICAgICAgICAgXAotICBtYWNybyhkYXRh
Z3JpZCwgREFUQUdSSUQpICAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWNybyhkY2VsbCwg
REFUQUdSSURDRUxMKSAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWNybyhkY29sLCBEQVRB
R1JJRENPTCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWNybyhkcm93LCBEQVRBR1JJ
RFJPVykKLSNlbHNlCi0jZGVmaW5lIEZPUl9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykKLSNlbmRp
ZgotCiAjZGVmaW5lIEZPUl9FQUNIX1RBRyhtYWNybykgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgRk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgICAgICBcCiAg
ICAgbWFjcm8oYSwgQU5DSE9SKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
bWFjcm8oYXBwbGV0LCBBUFBMRVQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWFj
cm8oYXJlYSwgQVJFQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAkocmV2aXNpb24gNDYw
ODYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5B
QkxFKERBVEFHUklEKQotCi0jaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3VyY2UuaCIKLQotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MRGF0
YUdyaWRFbGVtZW50LmgiCi0jaW5jbHVkZSAiVjhIVE1MRGF0YUdyaWRFbGVtZW50LmgiCi0KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1WOERhdGFHcmlkRGF0YVNvdXJjZTo6VjhEYXRhR3JpZERh
dGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFtZSkK
LSAgICA6IG1fZGF0YVNvdXJjZSh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+OjpOZXcoZGF0YVNv
dXJjZSkpCi0gICAgLCBtX2ZyYW1lKGZyYW1lKQotewotI2lmbmRlZiBOREVCVUcKLSAgICBWOEdD
Q29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoREFUQVNPVVJDRSwgdGhpcywgbV9kYXRh
U291cmNlKTsKLSNlbmRpZgotfQotCi1WOERhdGFHcmlkRGF0YVNvdXJjZTo6flY4RGF0YUdyaWRE
YXRhU291cmNlKCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgVjhHQ0NvbnRyb2xsZXI6OnVucmVn
aXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9kYXRhU291cmNlKTsKLSNlbmRpZgotICAgIG1fZGF0
YVNvdXJjZS5EaXNwb3NlKCk7Ci0gICAgbV9kYXRhU291cmNlLkNsZWFyKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgJKHJldmlzaW9uIDQ2MDg2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0KLSNpZm5kZWYgVjhEYXRhR3JpZERhdGFTb3VyY2VfaAot
I2RlZmluZSBWOERhdGFHcmlkRGF0YVNvdXJjZV9oCi0KLSNpZiBFTkFCTEUoREFUQUdSSUQpCi0K
LSNpbmNsdWRlICJEYXRhR3JpZERhdGFTb3VyY2UuaCIKLSNpbmNsdWRlIDx2OC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTERhdGFHcmlkRWxlbWVudDsK
LQotY2xhc3MgVjhEYXRhR3JpZERhdGFTb3VyY2UgOiBwdWJsaWMgRGF0YUdyaWREYXRhU291cmNl
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOERhdGFHcmlkRGF0YVNvdXJjZT4g
Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJhbWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RGF0YUdyaWREYXRhU291cmNlKGRh
dGFTb3VyY2UsIGZyYW1lKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+VjhEYXRhR3JpZERhdGFT
b3VyY2UoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0pTRGF0YUdyaWREYXRhU291cmNlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0RhdGFTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTb3VyY2U7IH0KLQotcHJpdmF0ZToKLSAgICBWOERh
dGFHcmlkRGF0YVNvdXJjZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIEZyYW1lKik7Ci0KLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG1fZGF0YVNvdXJjZTsKLSAgICBSZWZQdHI8RnJhbWU+
IG1fZnJhbWU7Ci19OwotCi1pbmxpbmUgVjhEYXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3Jp
ZERhdGFTb3VyY2UoRGF0YUdyaWREYXRhU291cmNlKiBkYXRhU291cmNlKQotewotICAgIEFTU0VS
VChkYXRhU291cmNlLT5pc0pTRGF0YUdyaWREYXRhU291cmNlKCkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxWOERhdGFHcmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOwotfQotCi1pbmxpbmUg
Y29uc3QgVjhEYXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3JpZERhdGFTb3VyY2UoY29uc3Qg
RGF0YUdyaWREYXRhU291cmNlKiBkYXRhU291cmNlKQotewotICAgIEFTU0VSVChkYXRhU291cmNl
LT5pc0pTRGF0YUdyaWREYXRhU291cmNlKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBWOERhdGFHcmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCi0jZW5kaWYgLy8gVjhEYXRh
R3JpZERhdGFTb3VyY2VfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAko
cmV2aXNpb24gNDYwODYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IFYoRVZFTlRfTElTVEVORVIpICAgICAgICAgICAgIFwKICAgICBWKE5PREVfRklMVEVSKSAgICAg
ICAgICAgICAgICBcCiAgICAgVihTQ1JJUFRJTlNUQU5DRSkgICAgICAgICAgICAgXAotICAgIFYo
U0NSSVBUVkFMVUUpICAgICAgICAgICAgICAgIFwKLSAgICBWKERBVEFTT1VSQ0UpCisgICAgVihT
Q1JJUFRWQUxVRSkKIAogCiAgICAgLy8gSG9zdCBpbmZvcm1hdGlvbiBvZiBwZXJzaXN0ZW50IGhh
bmRsZXMuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAkocmV2aXNpb24gNDYwODYpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjAgKzM4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogCi0jaWYgRU5BQkxF
KERBVEFHUklEKQotI2RlZmluZSBEQVRBR1JJRF9IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRNTERBVEFHUklEQ0VMTEVMRU1F
TlQsIEhUTUxEYXRhR3JpZENlbGxFbGVtZW50KSAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRN
TERBVEFHUklEQ09MRUxFTUVOVCwgSFRNTERhdGFHcmlkQ29sRWxlbWVudCkgICAgICAgICAgICAg
ICAgICAgXAotICAgIFYoSFRNTERBVEFHUklERUxFTUVOVCwgSFRNTERhdGFHcmlkRWxlbWVudCkg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRNTERBVEFHUklEUk9XRUxFTUVOVCwg
SFRNTERhdGFHcmlkUm93RWxlbWVudCkKLSNkZWZpbmUgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhW
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBWKERBVEFHUklE
Q09MVU1OLCBEYXRhR3JpZENvbHVtbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBWKERBVEFHUklEQ09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5MaXN0KQotI2Vsc2UK
LSNkZWZpbmUgREFUQUdSSURfSFRNTEVMRU1FTlRfVFlQRVMoVikKLSNkZWZpbmUgREFUQUdSSURf
Tk9OTk9ERV9UWVBFUyhWKQotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiAjZGVmaW5lIFZJ
REVPX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgVihIVE1MQVVESU9FTEVNRU5ULCBIVE1MQXVkaW9FbGVtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC05Myw3ICs3OSw5IEBAIHR5cGVkZWYgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJB
Q1RFUkRBVEEsIENoYXJhY3RlckRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBWKENEQVRBU0VDVElPTiwgQ0RBVEFTZWN0aW9uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBWKENPTU1FTlQsIENvbW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKENPTU1FTlQs
IENvbW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwNCisgICAgVihEQVRBR1JJRENPTFVNTiwgRGF0YUdyaWRDb2x1bW4pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQorICAgIFYoREFUQUdSSURDT0xVTU5MSVNULCBEYXRhR3Jp
ZENvbHVtbkxpc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlQs
IERvY3VtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIFYoRE9DVU1FTlRGUkFHTUVOVCwgRG9jdW1lbnRGcmFnbWVudCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlRUWVBFLCBEb2N1bWVudFR5cGUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTE1LDYgKzEwMywxMCBA
QCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1MQlJF
TEVNRU5ULCBIVE1MQlJFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgVihIVE1MQlVUVE9ORUxFTUVOVCwgSFRNTEJ1dHRvbkVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MQ0FOVkFTRUxFTUVOVCwgSFRNTENhbnZh
c0VsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdS
SURDRUxMRUxFTUVOVCwgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQpICAgICAgICAgICAgICAgICBc
CisgICAgVihIVE1MREFUQUdSSURDT0xFTEVNRU5ULCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KSAg
ICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURFTEVNRU5ULCBIVE1MRGF0YUdy
aWRFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURS
T1dFTEVNRU5ULCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50KSAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihIVE1MRElSRUNUT1JZRUxFTUVOVCwgSFRNTERpcmVjdG9yeUVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRElWRUxFTUVOVCwgSFRNTERpdkVsZW1lbnQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRExJU1RFTEVNRU5U
LCBIVE1MRExpc3RFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x
NjIsNyArMTU0LDYgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAog
ICAgIFYoSFRNTFRJVExFRUxFTUVOVCwgSFRNTFRpdGxlRWxlbWVudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTFVMSVNURUxFTUVOVCwgSFRNTFVMaXN0RWxlbWVu
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTEVMRU1FTlQsIEhU
TUxFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFZJREVPX0hUTUxFTEVNRU5UX1RZUEVTKFYpCiAKICNpZiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKQEAgLTM4NSw3ICszNzYsNiBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihYUEFUSFJFU1VMVCwgWFBhdGhSZXN1bHQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYU0xUUFJPQ0VT
U09SLCBYU0xUUHJvY2Vzc29yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgQUNUSVZFX0RPTV9PQkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVklERU9fTk9OTk9ERV9U
WVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQpAQCAt
Mzk5LDE0ICszODksMTQgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bAogICAgIFYoU1FMVFJBTlNBQ1RJT04sIFNRTFRyYW5zYWN0aW9uKQogI2Vsc2UKICNkZWZpbmUg
RE9NX09CSkVDVF9EQVRBQkFTRV9UWVBFUyhWKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihTVE9SQUdF
RVZFTlQsIFN0b3JhZ2VFdmVudCkKLSNlbHNlCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9U
WVBFUyhWKQorI2VuZGlmDQorDQorI2lmIEVOQUJMRShET01fU1RPUkFHRSkNCisjZGVmaW5lIERP
TV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQorICAgIFYoU1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICBWKFNUT1JBR0VFVkVOVCwgU3RvcmFnZUV2
ZW50KQ0KKyNlbHNlDQorI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikNCiAjZW5k
aWYKIAogI2RlZmluZSBET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDQ2MDg2KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0
MDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhO
b2RlRmlsdGVyQWNjZXB0Tm9kZSk7CiAKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihIVE1MRGF0YUdyaWRFbGVtZW50RGF0YVNvdXJjZSk7CisKICAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhIVE1MRm9ybUVsZW1lbnRTdWJtaXQpOwogCiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJP
UEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7CkBAIC00NTAsMTIgKzQ1Miw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTUUxSZXN1bHRTZXRSb3dMaXN0SXRl
bSk7CiAKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0
TGlzdCk7Ci0gIAotI2lmIEVOQUJMRShEQVRBR1JJRCkKLSAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUihIVE1MRGF0YUdyaWRFbGVtZW50RGF0YVNvdXJjZSk7Ci0gICAgICAgIERFQ0xB
UkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKLSAgICAgICAg
REVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKLSNlbmRp
ZiAgICAgIAogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICBERUNMQVJFX0lOREVY
RURfUFJPUEVSVFlfR0VUVEVSKFN0b3JhZ2UpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA0NjA4NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFH
cmlkRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDQyICsyOSwyNyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkhUTUxEYXRhR3JpZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJWOERhdGFHcmlkRGF0YVNvdXJj
ZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
IAotI2lmIEVOQUJMRShEQVRBR1JJRCkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBQ0NFU1NP
Ul9HRVRURVIoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uSFRNTERhdGFHcmlkRWxlbWVudC5kYXRhU291cmNlLl9nZXQiKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7Ci0gICAgSFRNTERhdGFHcmlk
RWxlbWVudCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1M
RGF0YUdyaWRFbGVtZW50Pihob2xkZXIpOwotICAgIERhdGFHcmlkRGF0YVNvdXJjZSogZGF0YVNv
dXJjZSA9IGltcC0+ZGF0YVNvdXJjZSgpOwotICAgIGlmIChkYXRhU291cmNlICYmIGRhdGFTb3Vy
Y2UtPmlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGFzVjhEYXRhR3Jp
ZERhdGFTb3VyY2UoZGF0YVNvdXJjZSktPmpzRGF0YVNvdXJjZSgpOworICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiB9CiAKIEFDQ0VTU09SX1NFVFRFUihIVE1M
RGF0YUdyaWRFbGVtZW50RGF0YVNvdXJjZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0
YUdyaWRFbGVtZW50LmRhdGFTb3VyY2UuX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBIVE1MRGF0YUdyaWRFbGVtZW50KiBpbXAg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxEYXRhR3JpZEVsZW1l
bnQ+KGhvbGRlcik7Ci0gICAgUGFzc1JlZlB0cjxEYXRhR3JpZERhdGFTb3VyY2U+IGRhdGFTb3Vy
Y2U7Ci0gICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpIHsKLSAgICAgICAgRnJhbWUgKmZyYW1lID0g
aW1wLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgICAgICBkYXRhU291cmNlID0gVjhEYXRhR3Jp
ZERhdGFTb3VyY2U6OmNyZWF0ZSh2YWx1ZSwgZnJhbWUpOwotICAgIH0KLSAgICBpbXAtPnNldERh
dGFTb3VyY2UoZGF0YVNvdXJjZS5nZXQoKSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgRU5BQkxFKERBVEFHUklEKQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
YmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNDYwODYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50
L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIs
NyArMiw2IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuY29sdW1ucyAKIFBBU1M6
IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgMC4KIFBBU1M6IENvbHVtbiBy
ZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhhdmUgb25lIGNvbHVtbiBpbiB0aGUgbGlzdC4K
LVBBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBpcyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZy
b20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290
IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1l
IGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQg
aXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
YXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
YmFzaWMuaHRtbAkocmV2aXNpb24gNDYwODYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC04LDggKzgsNiBAQAogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IHsKLQogICAgICAgICBmdW5jdGlv
biBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJc
biIpKTsKQEAgLTQ4LDI3ICs0NiwxNyBAQAogICAgICAgICAgICAgbG9nKCJGQUlMOiBFeHBlY3Rl
ZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZlICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxl
bmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICAvLyBVc2UgaXRlbSgwKSB0byBtYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBmcm9t
IGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICB2YXIgZ290Q29sdW1uID0gZGF0
YWdyaWQuY29sdW1ucy5pdGVtKDApOwotICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikg
ewotICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uIGF0IGl0ZW0oMCkgaXMgdGhlIGNv
bHVtbiB3ZSBnb3QgYmFjayBmcm9tIGFkZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpdGVtKDApICgiICsgZ290Q29sdW1uICsgIikg
aXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgLy8gVXNlIFswXSB0byBtYWtlIHN1cmUgdGhlIGNvbHVtbiB3
ZSBnb3QgYmFjayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBnb3RD
b2x1bW4gPSBkYXRhZ3JpZC5jb2x1bW5zWzBdOwotICAgICAgICBpZiAoZ290Q29sdW1uID09IGNv
bHVtbikgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBmcm9t
IGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgorICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1u
c1swXSA9PSBjb2x1bW4pIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbiBhdCBp
bmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gYXQgaW5kZXggMCAoIiAr
IGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVkICgiICsgY29sdW1uICsg
IikuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBpcyBu
b3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Z290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJvbWNvbCJdOwotICAgICAgICBpZiAoZ290
Q29sdW1uID09IGNvbHVtbikgeworICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1uc1siZnJvbWNv
bCJdID09IGNvbHVtbikgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uIHdoZW4g
cmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiBy
ZWZlcmVuY2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBl
eHBlY3RlZCAoIiArIGNvbHVtbiArICIpLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUg
Y29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVk
LiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRXhhbWluZSB0aGUgY29sdW1uJ3MgcHJvcGVy
dGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBlY3RlZC4KQEAgLTEwOSwxMCAr
OTcsNiBAQAogICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uIGlzIG5vdCB0aGUgcHJp
bWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAgICAgICAgIH0KIAotICAgICAgICB9IGNhdGNo
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIg
KyBleGNlcHRpb24pOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3Jp
ZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVt
bnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gNDYwODYpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRl
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsNiBAQAogICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5
ewotCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAtNzYsMTAgKzc0LDYgQEAKICAgICAgICAgICAg
IGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBpcyBub3QgdGhlIHByaW1hcnkgY29sdW1uIGFz
IGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKLSAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsK
LSAgICAgICAgfQotCiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFH
cmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDQ2MDg2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDUgQEAKLVBBU1M6IGRhdGFncmlkIEpTIGJpbmRpbmcgaXMgW29iamVjdCBIVE1M
RGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5z
IGlzIGRlZmluZWQuCi1QQVNTOiBkYXRhZ3JpZC5jb2x1bW5zIEpTIGJpbmRpbmcgaXMgW29iamVj
dCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5j
b2x1bW5zIGlzIDIuCi1QQVNTOiBuZXdDb2wgSlMgYmluZGluZyBpcyBbb2JqZWN0IEhUTUxEYXRh
R3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZlIHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3Qu
CiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbSBhcyBleHBlY3RlZC4KIFBBU1M6IFRoZSBj
b2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVjdGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2MDg2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMjkgKzcsMTQgQEAKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdHJ5IHsKIAogICAgICAgICBm
dW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1z
ZyArICJcbiIpKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gZXhwZWN0
QmluZGluZyh3aGF0LCBvYmosIGNsYXNzbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFy
IGRlc2MgPSBTdHJpbmcob2JqKTsKLSAgICAgICAgICAgIHZhciBleHBlY3RlZERlc2MgPSAiW29i
amVjdCAiICsgY2xhc3NuYW1lICsgIl0iOwotICAgICAgICAgICAgaWYgKGRlc2MgPT0gZXhwZWN0
ZWREZXNjKSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJQQVNTOiAiICsgd2hhdCArICIgSlMgYmlu
ZGluZyBpcyAiICsgZGVzYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGxvZygiRkFJTDogIiArIHdoYXQgKyAiIEpTIGJpbmRpbmcgaXMgIiArIGRlc2MgKyAiKGV4cGVj
dGVkICIgKyBleHBlY3RlZERlc2MgKyAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICAvLyBUZXN0IGJpbmRpbmcgb2YgPGRhdGFncmlkPiB0byBKUyBIVE1M
RGF0YUdyaWRFbGVtZW50OgorCiAgICAgICAgIHZhciBkYXRhZ3JpZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0gICAgICAgIGV4cGVjdEJpbmRpbmcoImRhdGFncmlkIiwgZGF0
YWdyaWQsICJIVE1MRGF0YUdyaWRFbGVtZW50Iik7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRl
c3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkg
ewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVt
bnMgaXMgZGVmaW5lZC4iKTsKQEAgLTM3LDkgKzIyLDYgQEAKICAgICAgICAgICAgIGxvZygiRkFJ
TDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyBudWxsLiIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gVGVzdCBiaW5kaW5nIG9mIDxkY29sPiB0byBKUyBEYXRhR3JpZENv
bHVtbkxpc3Q6Ci0gICAgICAgIGV4cGVjdEJpbmRpbmcoImRhdGFncmlkLmNvbHVtbnMiLCBkYXRh
Z3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5MaXN0Iik7Ci0gICAgICAgIAogICAgICAgICAv
LyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5n
dGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRh
Z3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC00OSw3ICszMSw2IEBACiAgICAgICAgIAogICAgICAg
ICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAgICAgICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKLSAgICAgICAgZXhwZWN0QmluZGluZygibmV3Q29sIiwg
bmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVudCIpOwogICAgICAgICBuZXdDb2wuc2V0QXR0
cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAgIG5ld0NvbC5zZXRBdHRyaWJ1dGUoImxhYmVs
IiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAgbmV3Q29sLnNldEF0dHJpYnV0ZSgidHlwZSIs
ICJ0ZXh0Iik7CkBAIC0xMTcsMTEgKzk4LDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmltYXJ5IGNvbHVtbiwgYnV0IHRoZXJlIHNob3Vs
ZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICB9IGNhdGNoIChl
eGNlcHRpb24pIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBl
eGNlcHRpb24pOwotICAgICAgICB9Ci0gICAgICAgIAorICAgIAogICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlk
RGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lvbiA0NjA4NikKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw2IEBACiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CiAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBs
b2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIp
KTsKQEAgLTE2LDcgKzE0LDcgQEAKICAgICAgICAgdmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgdmFsdWUuCi0g
ICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09PSBudWxsKSB7CisgICAgICAgIGlmIChk
YXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogSW5p
dGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291cmNlIGlzIG51bGwuIik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQu
ZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAiICsgZGF0YWdyaWQuZGF0YVNvdXJjZSArICIu
Iik7CkBAIC0yNCwxOCArMjIsMTggQEAKIAogICAgICAgICAvLyBUZXN0IHNldHRpbmcgdG8gYSBK
UyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IDEwOwotICAgICAgICBpZiAo
ZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFT
b3VyY2UgPT0gMTApIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRh
dGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291
cmNlIHRvIGEgbnVtYmVyLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93
ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgbnVtYmVyLiIpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRvIGEgSlMgbnVtYmVyCiAgICAgICAgIGRhdGFn
cmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmciOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0
YVNvdXJjZSA9PT0gIlRlc3QgU3RyaW5nIikgeworICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNv
dXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IEFsbG93ZWQg
c2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdy
aWQuZGF0YVNvdXJjZSB0byBhIHN0cmluZy4iKTsKKyAgICAgICAgICAgIGxvZygiRkFJTDogRGlk
IG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhIHN0cmluZy4iKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRhU291cmNlIHRvIGFuIG9i
amVjdC4KQEAgLTQ0LDE5ICs0MiwxNSBAQAogICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJj
ZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGlu
ZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVjdC4iKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvdyBzZXR0aW5nIGRhdGFncmlkLmRh
dGFTb3VyY2UgdG8gYW4gb2JqZWN0LiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90
IGFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVjdC4iKTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRhU291cmNlIHRvIG51bGwuCisg
ICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KICAgICAgICAg
ZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291
cmNlID09PSBudWxsKSB7CisgICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwp
IHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFT
b3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJ
TDogRGlkIG5vdCBhbGxvdyBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgICAg
ICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNv
dXJjZSB0byBudWxsLiIpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33013</attachid>
            <date>2009-07-18 00:36:08 -0700</date>
            <delta_ts>2009-07-20 09:57:14 -0700</delta_ts>
            <desc>now with changelog!</desc>
            <filename>revert.v2.patch</filename>
            <type>text/plain</type>
            <size>43448</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDktMDctMTggIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmV2ZXJ0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0MDcKKworICAg
ICAgICBSZXZlcnQgSmVucycgcGF0Y2guICBJIGJlbGlldmUgaGUgZm9yZ290IHRvIGluY2x1ZGUg
YSBmaWxlLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRl
eC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX0dFVFRFUik6CisgICAgICAgIChXZWJDb3Jl
OjpBQ0NFU1NPUl9TRVRURVIpOgorCiAyMDA5LTA3LTE3ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
aW50dWRhdGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gNDYwODYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNjAzLDcgKzYwMyw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVBhcnNlckNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCcsCkBAIC02OTQs
OCArNjkzLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmcuaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RGF0
YUdyaWREYXRhU291cmNlLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhEYXRhR3Jp
ZERhdGFTb3VyY2UuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTU1hcC5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDYwODYpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsMTgg
KzI0Myw2IEBAIHN1YiBHZXRJbXBsZW1lbnRhdGlvbkZpbGVOYW1lCiAgICAgcmV0dXJuICIke2lm
YWNlfS5oIjsKIH0KIAotIyBJZiB0aGUgbm9kZSBoYXMgYSBbQ29uZGl0aW9uYWw9WFhYXSBhdHRy
aWJ1dGUsIHJldHVybnMgYW4gIkVOQUJMRShYWFgpIiBzdHJpbmcgZm9yIHVzZSBpbiBhbiAjaWYu
Ci1zdWIgR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZwotewotICAgIG15ICRub2RlID0gc2hpZnQ7
Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gJG5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25k
aXRpb25hbCJ9OwotICAgIGlmICgkY29uZGl0aW9uYWwpIHsKLSAgICAgICAgcmV0dXJuICJFTkFC
TEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAi
KSI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuICIiOwotICAgIH0KLX0KLQogc3ViIEdl
bmVyYXRlSGVhZGVyCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMjY5LDEyICsyNTcs
MTcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJGNvZGVHZW5lcmF0b3ItPkFkZE1ldGhvZHND
b25zdGFudHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMoJGRhdGFOb2RlKTsKIAogICAg
IG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJM
ZWdhY3lQYXJlbnQifTsKLSAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRkYXRhTm9kZSk7CisgICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKIAogICAgICMgLSBBZGQgZGVm
YXVsdCBoZWFkZXIgdGVtcGxhdGUKICAgICBAaGVhZGVyQ29udGVudCA9IHNwbGl0KCJcciIsICRo
ZWFkZXJUZW1wbGF0ZSk7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIG15ICRjb25k
aXRpb25hbFN0cmluZzsKKyAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgICRjb25kaXRp
b25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywg
JGNvbmRpdGlvbmFsKSkgLiAiKSI7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKKyAgICB9CisKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiXG4jaWZuZGVmICRjbGFzc05hbWUiIC4gIl9IIik7CiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxuI2RlZmluZSAkY2xhc3NOYW1lIiAuICJfSFxuXG4iKTsKIApAQCAtMzE3LDcg
KzMxMCw3IEBAIEVORAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJGNsYXNzTmFtZSIgLiAiX0hcbiIpOwogCi0g
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNl
bmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiB9CiAK
IApAQCAtOTEwLDEzOCArOTAzLDEzNCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0
YQogICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fV1JJVEUiOwogICAg
ICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewog
ICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7Ci0gICAgICAg
ICAgICBpZiAoISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAhKCRhdHRyRXh0
LT57IlY4UmVhZE9ubHkifSkpIHsKLSAgICAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAi
fHY4OjpBTExfQ0FOX1dSSVRFIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp
ZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICAgICAgICAkYWNj
ZXNzQ29udHJvbCAuPSAifHY4OjpQUk9ISUJJVFNfT1ZFUldSSVRJTkciOworICAgICAgICBpZiAo
ISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAhKCRhdHRyRXh0LT57IlY4UmVh
ZE9ubHkifSkpIHsKKyAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OkFMTF9DQU5f
V1JJVEUiOwogICAgICAgICB9Ci0gICAgICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPigiIC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7Ci0KLSAgICAgICAg
bXkgJGN1c3RvbUFjY2Vzc29yID0KLSAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8
Ci0gICAgICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fAotICAgICAgICAgICAg
JGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4
Q3VzdG9tIn0gfHwKLSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwK
LSAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwKLSAgICAgICAgICAg
ICIiOwotICAgICAgICBpZiAoJGN1c3RvbUFjY2Vzc29yIGVxIDEpIHsKLSAgICAgICAgICAgICMg
dXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0dHIg
bmFtZQotICAgICAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiBXS191
Y2ZpcnN0KCRhdHRyTmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkZ2V0dGVyOwotICAg
ICAgICBteSAkc2V0dGVyOwotICAgICAgICBteSAkcHJvcEF0dHIgPSAidjg6Ok5vbmUiOwotICAg
ICAgICBteSAkaGFzQ3VzdG9tU2V0dGVyID0gMDsKLQotICAgICAgICAjIENoZWNrIGF0dHJpYnV0
ZXMuCi0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9KSB7Ci0gICAgICAgICAgICAk
cHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkYXR0
ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgICAgICRwcm9wQXR0ciAu
PSAifHY4OjpEb250RGVsZXRlIjsKLSAgICAgICAgfQotCi0gICAgICAgIG15ICRvbl9wcm90byA9
ICIwIC8qIG9uIGluc3RhbmNlICovIjsKLSAgICAgICAgbXkgJGRhdGEgPSAiVjhDbGFzc0luZGV4
OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOwotCi0gICAgICAgICMgQ29uc3Ry
dWN0b3IKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLykgewotICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAg
ICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBlKTsKLSAgICAgICAgICAgICRk
YXRhID0gIlY4Q2xhc3NJbmRleDo6JHtjb25zdHJ1Y3RvckluZGV4fSI7Ci0gICAgICAgICAgICAk
Z2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAgICAgICAk
cHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKLQotICAgICAgICAjIEV2ZW50TGlzdGVuZXJzCi0g
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikg
ewotICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZlbnRI
YW5kbGVyQWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0
b206OnY4RE9NV2luZG93RXZlbnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwotICAgICAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJEb2N1bWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxCb2R5RWxlbWVudCIgfHwgJGlu
dGVyZmFjZU5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxGcmFtZVNldEVsZW1lbnQiKSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1
c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAg
ICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxlbWVudEV2ZW50SGFuZGxlckFjY2Vzc29yU2V0
dGVyIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlciA9ICJW
OEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkYXR0ck5hbWUg
ZXEgInNlbGYiKSB7Ci0gICAgICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAg
ICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtj
dXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9
KSB7CisgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBST0hJQklUU19PVkVSV1JJVElO
RyI7CisgICAgfQorICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPigiIC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7CiAKLSAgICAgICAgIyBDdXN0b20gR2V0
dGVyIGFuZCBTZXR0ZXIKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwg
JGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgeworICAgIG15ICRjdXN0b21BY2Nlc3NvciA9CisgICAg
ICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNl
dHRlciJ9IHx8CisgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8CisgICAgICAg
ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwKKyAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21T
ZXR0ZXIifSB8fAorICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8CisgICAg
ICAgICIiOworICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgeworICAgICAgICAjIHVzZSB0
aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUK
KyAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiBXS191Y2ZpcnN0KCRh
dHRyTmFtZSk7CisgICAgfQorCisgICAgbXkgJGdldHRlcjsKKyAgICBteSAkc2V0dGVyOworICAg
IG15ICRwcm9wQXR0ciA9ICJ2ODo6Tm9uZSI7CisgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7
CisKKyAgICAjIENoZWNrIGF0dHJpYnV0ZXMuCisgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVt
In0pIHsKKyAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKKyAgICB9CisgICAg
aWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAgICAkcHJvcEF0
dHIgLj0gInx2ODo6RG9udERlbGV0ZSI7CisgICAgfQorCisgICAgbXkgJG9uX3Byb3RvID0gIjAg
Lyogb24gaW5zdGFuY2UgKi8iOworICAgIG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5WQUxJ
RF9DTEFTU19JTkRFWCAvKiBubyBkYXRhICovIjsKKworICAgICMgQ29uc3RydWN0b3IKKyAgICBp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CisgICAg
ICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBz
L0NvbnN0cnVjdG9yJC8vOworICAgICAgICBteSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25z
dHJ1Y3RvclR5cGUpOworICAgICAgICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0
b3JJbmRleH0iOworICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6
JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yR2V0dGVyIjsKKyAgICAgICAgJHNldHRlciA9ICIw
IjsKKyAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CisKKyAgICAjIEV2ZW50TGlz
dGVuZXJzCisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVu
dExpc3RlbmVyIikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIp
IHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZlbnRIYW5k
bGVyQWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhE
T01XaW5kb3dFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAgICAgIH0gZWxzaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQi
IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1l
IGVxICJTVkdFbGVtZW50SW5zdGFuY2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRnJhbWVT
ZXRFbGVtZW50IikgeworICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50
RXZlbnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1
c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29y
fUFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29y
a2VyQ29udGV4dCIgYW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsKICAgICAgICAgICAgICAgICAk
c2V0dGVyID0gIjAiOwogICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHki
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkaGFzQ3VzdG9tU2V0dGVy
ID0gMTsKICAgICAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNj
ZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwogICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAg
ICAgIyBDdXN0b20gU2V0dGVyCi0gICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNl
dHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICRo
YXNDdXN0b21TZXR0ZXIgPSAxOwotICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5h
bWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVy
ID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwotCi0gICAg
ICAgICMgQ3VzdG9tIEdldHRlcgotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21H
ZXR0ZXIifSkgewotICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFj
Y2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZh
Y2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXIiOwotCi0gICAgICAgICMgUmVw
bGFjZWFibGUKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewot
ICAgICAgICAgICAgIyBSZXBsYWNlYWJsZSBhY2Nlc3NvciBpcyBwdXQgb24gaW5zdGFuY2UgdGVt
cGxhdGUgd2l0aCBSZWFkT25seSBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7
aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKKyAgICAjIEN1
c3RvbSBHZXR0ZXIgYW5kIFNldHRlcgorICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbSJ9
IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0pIHsKKyAgICAgICAgJGdldHRlciA9ICJWOEN1c3Rv
bTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgewog
ICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLQotICAgICAgICAgICAgIyBNYXJrIHRvIGF2b2lk
IGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0LgotICAgICAgICAgICAgJGhh
c0N1c3RvbVNldHRlciA9IDE7Ci0KLSAgICAgICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNh
c2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgdXBzdHJlYW0gYXMgUmVwbGFjZWFibGUuCi0g
ICAgICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3Qg
bWFya2VkIGFzIFJlYWRPbmx5Ci0gICAgICAgICAgICAjIHVwc3RyZWFtIGFuZCByZWFjaCBwYXJp
dHkuCi0gICAgICAgICAgICBpZiAoISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQg
JGF0dHJOYW1lIGVxICJ0b3AiKSkgewotICAgICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4
OjpSZWFkT25seSI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgIyBOb3JtYWwKKyAgICAgICAg
ICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0
ckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5h
bDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKKyAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIg
PSAxOworICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29y
fUFjY2Vzc29yU2V0dGVyIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJS
ZXBsYWNlYWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7Ci0gICAgICAgICAgICAkc2V0dGVy
ID0gIjAiOworICAgICMgQ3VzdG9tIFNldHRlcgorICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1
c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAg
JGhhc0N1c3RvbVNldHRlciA9IDE7CisgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAkc2V0dGVyID0gIlY4
Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOworCisgICAgIyBDdXN0
b20gR2V0dGVyCisgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0pIHsKKyAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0
dGVyIjsKKyAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0clNldHRlciI7CisKKyAgICAjIFJlcGxhY2VhYmxlCisgICAgfSBlbHNpZiAoJGF0
dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgeworICAgICAgICAjIFJlcGxhY2VhYmxlIGFjY2Vzc29y
IGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJpYnV0ZS4KKyAg
ICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0
ckdldHRlciI7CisgICAgICAgICRzZXR0ZXIgPSAiMCI7CisKKyAgICAgICAgIyBNYXJrIHRvIGF2
b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0LgorICAgICAgICAkaGFz
Q3VzdG9tU2V0dGVyID0gMTsKKworICAgICAgICAjIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9m
IHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIHVwc3RyZWFtIGFzIFJlcGxhY2VhYmxlLgorICAgICAg
ICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3QgbWFya2VkIGFz
IFJlYWRPbmx5CisgICAgICAgICMgdXBzdHJlYW0gYW5kIHJlYWNoIHBhcml0eS4KKyAgICAgICAg
aWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9w
IikpIHsKICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7CiAgICAgICAg
IH0KIAotICAgICAgICAjIFJlYWQgb25seSBhdHRyaWJ1dGVzCi0gICAgICAgIGlmICgkYXR0cmli
dXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgewot
ICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgfQorICAgICMgTm9ybWFsCisgICAg
fSBlbHNlIHsKKyAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7
YXR0ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXIiOworICAgIH0KIAotICAgICAgICAjIEFu
IGFjY2Vzc29yIGNhbiBiZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCi0gICAgICAgIGlmICgkYXR0
ckV4dC0+eyJ2OE9uUHJvdG8ifSkgewotICAgICAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24g
cHJvdG8gKi8iOwotICAgICAgICB9CisgICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0g
JiYgISRoYXNDdXN0b21TZXR0ZXIpIHsKKyAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAg
JHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKKyAgICB9CiAKLSAgICAgICAgbXkgJGNvbW1l
bnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAoVHlwZTogJyIgLiAkYXR0cmlidXRlLT50
eXBlIC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcg
Jywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKLSAgICAgICAgCi0gICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICMgUmVhZCBvbmx5IGF0dHJp
YnV0ZXMKKyAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8fCAkYXR0ckV4
dC0+eyJWOFJlYWRPbmx5In0pIHsKKyAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICB9CiAKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAjIEFuIGFjY2Vzc29yIGNhbiBi
ZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCisgICAgaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9
KSB7CisgICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3RvICovIjsKKyAgICB9CisKKyAg
ICBteSAkY29tbWVudEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRh
dHRyaWJ1dGUtPnR5cGUgLgorICAgICAgICAgICAgICAgICAgICAgICInIEV4dEF0dHI6ICciIC4g
am9pbignICcsIGtleXMoJXskYXR0ckV4dH0pKSAuICInKSI7CisgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKICAgLy8gJGNvbW1lbnRJbmZvCiAgIHsgIiRhdHRyTmFtZSIsCiAgICAgJGdl
dHRlciwKQEAgLTEwNTEsNyArMTA0MCw2IEBAIHN1YiBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVE
YXRhCiAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLAog
ICAgICRvbl9wcm90byB9LAogRU5ECi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5k
aWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICB9CiB9CiAKQEAgLTEwNjYsNyArMTA1NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgbXkgJGNsYXNzSW5kZXggPSB1YygkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGlu
dGVyZmFjZU5hbWUpKTsKIAogICAgIG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQifTsKLSAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRkYXRhTm9kZSk7CisgICAgbXkgJGNv
bmRpdGlvbmFsID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwi
fTsKIAogICAgIEBhbGxQYXJlbnRzID0gJGNvZGVHZW5lcmF0b3ItPkZpbmRQYXJlbnRzUmVjdXJz
aXZlbHkoJGRhdGFOb2RlKTsKIApAQCAtMTA3OSw3ICsxMDY3LDExIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJpbmRpbmcuaFwiXG5cbiIgLgog
ICAgICAgICAgIiN1bmRlZiBMT0dcblxuIik7CiAKLSAgICBwdXNoKEBpbXBsRml4ZWRIZWFkZXIs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIGlmICgkY29uZGl0aW9uYWwpIHsKKyAg
ICAgICAgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUo
Iiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKKyAgICAgICAgcHVzaChAaW1wbEZp
eGVkSGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIik7CisgICAgfQogCiAg
ICAgaWYgKCRjbGFzc05hbWUgPX4gL15WOFNWR0FuaW1hdGVkLykgewogICAgICAgICBBZGRJbmNs
dWRlc0ZvclNWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSk7CkBAIC0xMzk1LDcgKzEzODcs
NyBAQCBFTkQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIEVORAogCi0gICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbDsKIH0KIAogCkBAIC0yMDQ4LDggKzIwNDAs
OCBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVx
ICJSR0JDb2xvciIpIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdCA9ICJSZWZQdHI8UkdCQ29sb3I+
IHJnYmNvbG9yID0gUkdCQ29sb3I6OmNyZWF0ZSgkdmFsdWUpO1xuIjsKLSAgICAgICAgbXkgJGNv
bnZlcnQgPSAiVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlJH
QkNPTE9SLCBXVEY6OmdldFB0cihyZ2Jjb2xvcikpIjsKKyAgICAgICAgbXkgJGNvbnN0cnVjdCA9
ICJSZWZQdHI8UkdCQ29sb3I+IHJnYmNvbG9yID0gUkdCQ29sb3I6OmNyZWF0ZSgkdmFsdWUpO1xu
IjsNCisgICAgICAgIG15ICRjb252ZXJ0ID0gIlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpSR0JDT0xPUiwgV1RGOjpnZXRQdHIocmdiY29sb3IpKSI7DQogICAg
ICAgICByZXR1cm4gJGNvbnN0cnVjdCAuICRpbmRlbnQgLiAicmV0dXJuICIgLiAkY29udmVydDsK
ICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHJl
dmlzaW9uIDQ2MDg2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1Myw2IEBACiAjaW5jbHVkZSAiWFBhdGhOU1Jl
c29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhSZXN1bHQuaCIKIAotI2lmIEVOQUJMRShEQVRBR1JJ
RCkKLSNpbmNsdWRlICJEYXRhR3JpZENvbHVtbi5oIgotI2luY2x1ZGUgIkRhdGFHcmlkQ29sdW1u
TGlzdC5oIgotI2VuZGlmIC8vIERBVEFHUklECi0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAj
aW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24gNDYwODYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MiwxMyAr
NDUyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RAogICAgIGNh
c2UgVjhDbGFzc0luZGV4OjpDTElFTlRSRUNUTElTVDoKICAgICAgICAgZGVzY3JpcHRvci0+SW5z
dGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BS
T1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCkpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFC
TEUoREFUQUdSSUQpCi0gICAgY2FzZSBWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVDoK
LSAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVy
dHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3Qp
KTsKLSAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3Bl
cnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCkp
OwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgZGVmYXVsdDoKKyAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTc5NSwxOCArNzg5LDcgQEAgYm9vbCBWOERPTVdy
YXBwZXI6OmlzV3JhcHBlck9mVHlwZSh2ODo6SAogI2RlZmluZSBGT1JfRUFDSF9WSURFT19UQUco
bWFjcm8pCiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBR1JJRCkKLSNkZWZpbmUgRk9SX0VBQ0hf
REFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgIFwKLSAgbWFjcm8oZGF0YWdyaWQsIERB
VEFHUklEKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFjcm8oZGNlbGwsIERBVEFHUklE
Q0VMTCkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFjcm8oZGNvbCwgREFUQUdSSURDT0wp
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFjcm8oZHJvdywgREFUQUdSSURST1cpCi0j
ZWxzZQotI2RlZmluZSBGT1JfRUFDSF9EQVRBR1JJRF9UQUcobWFjcm8pCi0jZW5kaWYKLQogI2Rl
ZmluZSBGT1JfRUFDSF9UQUcobWFjcm8pICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEZP
Ul9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykgICAgICAgICAgICAgICAgICAgXAogICAgIG1hY3Jv
KGEsIEFOQ0hPUikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIG1hY3JvKGFw
cGxldCwgQVBQTEVUKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIG1hY3JvKGFyZWEs
IEFSRUEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDQ2MDg2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShEQVRB
R1JJRCkKLQotI2luY2x1ZGUgIlY4RGF0YUdyaWREYXRhU291cmNlLmgiCi0KLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRNTERhdGFHcmlkRWxl
bWVudC5oIgotI2luY2x1ZGUgIlY4SFRNTERhdGFHcmlkRWxlbWVudC5oIgotCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotVjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0YUdyaWREYXRhU291cmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJhbWUpCi0gICAgOiBt
X2RhdGFTb3VyY2Uodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGRhdGFTb3VyY2UpKQot
ICAgICwgbV9mcmFtZShmcmFtZSkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgVjhHQ0NvbnRyb2xs
ZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKERBVEFTT1VSQ0UsIHRoaXMsIG1fZGF0YVNvdXJjZSk7
Ci0jZW5kaWYKLX0KLQotVjhEYXRhR3JpZERhdGFTb3VyY2U6On5WOERhdGFHcmlkRGF0YVNvdXJj
ZSgpCi17Ci0jaWZuZGVmIE5ERUJVRwotICAgIFY4R0NDb250cm9sbGVyOjp1bnJlZ2lzdGVyR2xv
YmFsSGFuZGxlKHRoaXMsIG1fZGF0YVNvdXJjZSk7Ci0jZW5kaWYKLSAgICBtX2RhdGFTb3VyY2Uu
RGlzcG9zZSgpOwotICAgIG1fZGF0YVNvdXJjZS5DbGVhcigpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oCShyZXZpc2lvbiA0NjA4NikKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotCi0jaWZuZGVmIFY4RGF0YUdyaWREYXRhU291cmNlX2gKLSNkZWZpbmUg
VjhEYXRhR3JpZERhdGFTb3VyY2VfaAotCi0jaWYgRU5BQkxFKERBVEFHUklEKQotCi0jaW5jbHVk
ZSAiRGF0YUdyaWREYXRhU291cmNlLmgiCi0jaW5jbHVkZSA8djguaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBGcmFtZTsKLWNsYXNzIEhUTUxEYXRhR3JpZEVsZW1lbnQ7Ci0KLWNsYXNz
IFY4RGF0YUdyaWREYXRhU291cmNlIDogcHVibGljIERhdGFHcmlkRGF0YVNvdXJjZSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VjhEYXRhR3JpZERhdGFTb3VyY2U+IGNyZWF0ZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YVNvdXJjZSwgRnJhbWUqIGZyYW1lKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOERhdGFHcmlkRGF0YVNvdXJjZShkYXRhU291cmNl
LCBmcmFtZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgflY4RGF0YUdyaWREYXRhU291cmNlKCk7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNEYXRhU291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhU291cmNlOyB9Ci0KLXByaXZhdGU6Ci0gICAgVjhEYXRhR3JpZERh
dGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBGcmFtZSopOwotCi0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiBtX2RhdGFTb3VyY2U7Ci0gICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1l
OwotfTsKLQotaW5saW5lIFY4RGF0YUdyaWREYXRhU291cmNlKiBhc1Y4RGF0YUdyaWREYXRhU291
cmNlKERhdGFHcmlkRGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKLXsKLSAgICBBU1NFUlQoZGF0YVNv
dXJjZS0+aXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VjhEYXRhR3JpZERhdGFTb3VyY2UqPihkYXRhU291cmNlKTsKLX0KLQotaW5saW5lIGNvbnN0IFY4
RGF0YUdyaWREYXRhU291cmNlKiBhc1Y4RGF0YUdyaWREYXRhU291cmNlKGNvbnN0IERhdGFHcmlk
RGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKLXsKLSAgICBBU1NFUlQoZGF0YVNvdXJjZS0+aXNKU0Rh
dGFHcmlkRGF0YVNvdXJjZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVjhEYXRh
R3JpZERhdGFTb3VyY2UqPihkYXRhU291cmNlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKERBVEFHUklEKQotI2VuZGlmIC8vIFY4RGF0YUdyaWREYXRh
U291cmNlX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgJKHJldmlzaW9u
IDQ2MDg2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw4ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKEVWRU5U
X0xJU1RFTkVSKSAgICAgICAgICAgICBcCiAgICAgVihOT0RFX0ZJTFRFUikgICAgICAgICAgICAg
ICAgXAogICAgIFYoU0NSSVBUSU5TVEFOQ0UpICAgICAgICAgICAgIFwKLSAgICBWKFNDUklQVFZB
TFVFKSAgICAgICAgICAgICAgICBcCi0gICAgVihEQVRBU09VUkNFKQorICAgIFYoU0NSSVBUVkFM
VUUpCiAKIAogICAgIC8vIEhvc3QgaW5mb3JtYXRpb24gb2YgcGVyc2lzdGVudCBoYW5kbGVzLgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHJldmlzaW9uIDQ2MDg2KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIwICszOCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKIAotI2lmIEVOQUJMRShEQVRBR1JJ
RCkKLSNkZWZpbmUgREFUQUdSSURfSFRNTEVMRU1FTlRfVFlQRVMoVikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRENFTExFTEVNRU5ULCBIVE1M
RGF0YUdyaWRDZWxsRWxlbWVudCkgICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJ
RENPTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQpICAgICAgICAgICAgICAgICAgIFwK
LSAgICBWKEhUTUxEQVRBR1JJREVMRU1FTlQsIEhUTUxEYXRhR3JpZEVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRFJPV0VMRU1FTlQsIEhUTUxEYXRh
R3JpZFJvd0VsZW1lbnQpCi0jZGVmaW5lIERBVEFHUklEX05PTk5PREVfVFlQRVMoVikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihEQVRBR1JJRENPTFVNTiwg
RGF0YUdyaWRDb2x1bW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
VihEQVRBR1JJRENPTFVNTkxJU1QsIERhdGFHcmlkQ29sdW1uTGlzdCkKLSNlbHNlCi0jZGVmaW5l
IERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpCi0jZGVmaW5lIERBVEFHUklEX05PTk5PREVf
VFlQRVMoVikKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogI2RlZmluZSBWSURFT19IVE1M
RUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIFYoSFRNTEFVRElPRUxFTUVOVCwgSFRNTEF1ZGlvRWxlbWVudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXApAQCAtOTMsNyArNzksOSBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihBVFRSLCBBdHRyKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihDSEFSQUNURVJEQVRB
LCBDaGFyYWN0ZXJEYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihDREFUQVNFQ1RJT04sIENEQVRBU2VjdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgVihDT01NRU5ULCBDb21tZW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihDT01NRU5ULCBDb21tZW50
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAg
IFYoREFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KKyAgICBWKERBVEFHUklEQ09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5M
aXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPQ1VNRU5ULCBEb2N1bWVu
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBW
KERPQ1VNRU5URlJBR01FTlQsIERvY3VtZW50RnJhZ21lbnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBWKERPQ1VNRU5UVFlQRSwgRG9jdW1lbnRUeXBlKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExNSw2ICsxMDMsMTAgQEAgdHlwZWRl
ZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoSFRNTEJSRUxFTUVOVCwg
SFRNTEJSRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFYoSFRNTEJVVFRPTkVMRU1FTlQsIEhUTUxCdXR0b25FbGVtZW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFYoSFRNTENBTlZBU0VMRU1FTlQsIEhUTUxDYW52YXNFbGVtZW50
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEQ0VMTEVM
RU1FTlQsIEhUTUxEYXRhR3JpZENlbGxFbGVtZW50KSAgICAgICAgICAgICAgICAgXAorICAgIFYo
SFRNTERBVEFHUklEQ09MRUxFTUVOVCwgSFRNTERhdGFHcmlkQ29sRWxlbWVudCkgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklERUxFTUVOVCwgSFRNTERhdGFHcmlkRWxlbWVu
dCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEUk9XRUxFTUVO
VCwgSFRNTERhdGFHcmlkUm93RWxlbWVudCkgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRN
TERJUkVDVE9SWUVMRU1FTlQsIEhUTUxEaXJlY3RvcnlFbGVtZW50KSAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFYoSFRNTERJVkVMRU1FTlQsIEhUTUxEaXZFbGVtZW50KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTERMSVNURUxFTUVOVCwgSFRNTERM
aXN0RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTYyLDcgKzE1
NCw2IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKEhU
TUxUSVRMRUVMRU1FTlQsIEhUTUxUaXRsZUVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKEhUTUxVTElTVEVMRU1FTlQsIEhUTUxVTGlzdEVsZW1lbnQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxFTEVNRU5ULCBIVE1MRWxlbWVu
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBEQVRBR1JJ
RF9IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBWSURFT19IVE1MRUxFTUVOVF9UWVBFUyhWKQogCiAjaWYgRU5BQkxFKFNWR19B
TklNQVRJT04pCkBAIC0zODUsNyArMzc2LDYgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbAogICAgIFYoWFBBVEhSRVNVTFQsIFhQYXRoUmVzdWx0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoWFNMVFBST0NFU1NPUiwgWFNM
VFByb2Nlc3NvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIEFD
VElWRV9ET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIERBVEFHUklEX05PTk5PREVfVFlQRVMoVikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFZJREVPX05PTk5PREVfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFNIQVJF
RF9XT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKQEAgLTM5OSwxNCAr
Mzg5LDE0IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBW
KFNRTFRSQU5TQUNUSU9OLCBTUUxUcmFuc2FjdGlvbikKICNlbHNlCiAjZGVmaW5lIERPTV9PQkpF
Q1RfREFUQUJBU0VfVFlQRVMoVikKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
I2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFYoU1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoU1RPUkFHRUVWRU5ULCBT
dG9yYWdlRXZlbnQpCi0jZWxzZQotI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikK
KyNlbmRpZg0KKw0KKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpDQorI2RlZmluZSBET01fT0JKRUNU
X1NUT1JBR0VfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
KyAgICBWKFNUT1JBR0UsIFN0b3JhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwNCisgICAgVihTVE9SQUdFRVZFTlQsIFN0b3JhZ2VFdmVudCkNCisj
ZWxzZQ0KKyNkZWZpbmUgRE9NX09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpDQogI2VuZGlmCiAKICNk
ZWZpbmUgRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tQmluZGluZy5oCShyZXZpc2lvbiA0NjA4NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNiArNDA2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUZpbHRl
ckFjY2VwdE5vZGUpOwogCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTERh
dGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOworCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRN
TEZvcm1FbGVtZW50U3VibWl0KTsKIAogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dF
VFRFUihET01XaW5kb3cpOwpAQCAtNDUwLDEyICs0NTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0pOwogCiAg
ICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoQ2xpZW50UmVjdExpc3QpOwot
ICAKLSNpZiBFTkFCTEUoREFUQUdSSUQpCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1IoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOwotICAgICAgICBERUNMQVJFX0lOREVY
RURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7Ci0gICAgICAgIERFQ0xBUkVf
TkFNRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7Ci0jZW5kaWYgICAgICAK
IAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BF
UlRZX0dFVFRFUihTdG9yYWdlKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24g
NDYwODYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1l
bnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0MiArMjksMjcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
RGF0YUdyaWRFbGVtZW50LmgiCi0jaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3VyY2UuaCIKKwor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKLSNpZiBF
TkFCTEUoREFUQUdSSUQpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQUNDRVNTT1JfR0VUVEVS
KEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291cmNlKQogewogICAgIElOQ19TVEFUUygiRE9NLkhU
TUxEYXRhR3JpZEVsZW1lbnQuZGF0YVNvdXJjZS5fZ2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhUTUxEYXRhR3JpZEVsZW1lbnQq
IGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERhdGFHcmlk
RWxlbWVudD4oaG9sZGVyKTsKLSAgICBEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2UgPSBp
bXAtPmRhdGFTb3VyY2UoKTsKLSAgICBpZiAoZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLT5pc0pT
RGF0YUdyaWREYXRhU291cmNlKCkpCi0gICAgICAgIHJldHVybiBhc1Y4RGF0YUdyaWREYXRhU291
cmNlKGRhdGFTb3VyY2UpLT5qc0RhdGFTb3VyY2UoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiB2ODo6TnVsbCgpOwogfQogCiBBQ0NFU1NPUl9TRVRURVIoSFRNTERhdGFHcmlk
RWxlbWVudERhdGFTb3VyY2UpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERhdGFHcmlkRWxl
bWVudC5kYXRhU291cmNlLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7Ci0gICAgSFRNTERhdGFHcmlkRWxlbWVudCogaW1wID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRGF0YUdyaWRFbGVtZW50Pihob2xk
ZXIpOwotICAgIFBhc3NSZWZQdHI8RGF0YUdyaWREYXRhU291cmNlPiBkYXRhU291cmNlOwotICAg
IGlmICghdmFsdWUuSXNFbXB0eSgpKSB7Ci0gICAgICAgIEZyYW1lICpmcmFtZSA9IGltcC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKLSAgICAgICAgZGF0YVNvdXJjZSA9IFY4RGF0YUdyaWREYXRhU291
cmNlOjpjcmVhdGUodmFsdWUsIGZyYW1lKTsKLSAgICB9Ci0gICAgaW1wLT5zZXREYXRhU291cmNl
KGRhdGFTb3VyY2UuZ2V0KCkpOworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIEVOQUJMRShEQVRBR1JJRCkKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDQ2MDg2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMDktMDctMTggIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2
ZXJ0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0MDcKKworICAgICAg
ICBSZXZlcnQgSmVucycgcGF0Y2guICBJIGJlbGlldmUgaGUgZm9yZ290IHRvIGluY2x1ZGUgYSBm
aWxlLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENv
bHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3Jp
ZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9kb20v
SFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1k
b20tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQv
RGF0YUdyaWRDb2x1bW5zLWRvbS5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3Jp
ZEVsZW1lbnQvRGF0YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWw6CisKIDIwMDktMDctMTcgIERh
bmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1l
bnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNp
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MDg2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBAQCBQQVNTOiBJbml0aWFsIHZhbHVlIG9mIGRhdGFn
cmlkLmNvbHVtbnMgCiBQQVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlz
IDAuCiBQQVNTOiBDb2x1bW4gcmV0dXJuZWQgZnJvbSBhZGQuCiBQQVNTOiBXZSBoYXZlIG9uZSBj
b2x1bW4gaW4gdGhlIGxpc3QuCi1QQVNTOiBUaGUgY29sdW1uIGF0IGl0ZW0oMCkgaXMgdGhlIGNv
bHVtbiB3ZSBnb3QgYmFjayBmcm9tIGFkZC4KIFBBU1M6IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBp
cyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiB3aGVu
IHJlZmVyZW5jZWQgYnkgbmFtZSBpcyB0aGUgb25lIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFT
UzogVGhlIGNvbHVtbidzIElEIGlzIGZyb21jb2wgYXMgZXhwZWN0ZWQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1l
bnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0bWwJKHJldmlzaW9uIDQ2MDg2KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDYgQEAKICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHRyeSB7
Ci0KICAgICAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICAgICAgewogICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7CkBAIC00OCwyNyArNDYsMTcgQEAKICAgICAgICAgICAg
IGxvZygiRkFJTDogRXhwZWN0ZWQgb25lIGNvbHVtbiBpbiB0aGUgbGlzdCBidXQgaGF2ZSAiICsg
ZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggKyAiIGNvbHVtbnMgaW5zdGVhZC4iKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8gbWFrZSBzdXJlIHRoZSBjb2x1
bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4KLSAgICAgICAg
dmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgwKTsKLSAgICAgICAgaWYgKGdv
dENvbHVtbiA9PSBjb2x1bW4pIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbiBh
dCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSAo
IiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVkICgiICsgY29sdW1u
ICsgIikuIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFVzZSBbMF0gdG8gbWFr
ZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUg
bGlzdC4KLSAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1swXTsKLSAgICAgICAg
aWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2x1
bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4KKyAgICAgICAg
aWYgKGRhdGFncmlkLmNvbHVtbnNbMF0gPT0gY29sdW1uKSB7CiAgICAgICAgICAgICBsb2coIlBB
U1M6IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBpcyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20g
YWRkLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29s
dW1uIGF0IGluZGV4IDAgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBleHBl
Y3RlZCAoIiArIGNvbHVtbiArICIpLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29s
dW1uIGF0IGluZGV4IDAgaXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQuIik7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wi
XTsKLSAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgaWYgKGRhdGFn
cmlkLmNvbHVtbnNbImZyb21jb2wiXSA9PSBjb2x1bW4pIHsKICAgICAgICAgICAgIGxvZygiUEFT
UzogVGhlIGNvbHVtbiB3aGVuIHJlZmVyZW5jZWQgYnkgbmFtZSBpcyB0aGUgb25lIHdlIGdvdCBi
YWNrIGZyb20gYWRkLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlM
OiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lICgiICsgZ290Q29sdW1uICsgIikg
aXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKKyAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbiB3aGVuIHJlZmVyZW5jZWQgYnkgbmFtZSBpcyBub3Qg
dGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEV4YW1pbmUg
dGhlIGNvbHVtbidzIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIHdoYXQgd2UgZXhw
ZWN0ZWQuCkBAIC0xMDksMTAgKzk3LDYgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNv
bHVtbiBpcyBub3QgdGhlIHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9
CiAKLSAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6
IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVs
ZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWwJKHJldmlzaW9uIDQ2MDg2
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENv
bHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDYgQEAK
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHRyeXsKLQogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAg
ICB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTc2LDEwICs3
NCw2IEBACiAgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBmaXJzdCBjb2x1bW4gaXMgbm90IHRo
ZSBwcmltYXJ5IGNvbHVtbiBhcyBleHBlY3RlZC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIH0g
Y2F0Y2ggKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaHJldyBleGNlcHRp
b24gIiArIGV4Y2VwdGlvbik7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERh
dGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29s
dW1ucy1kb20tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NjA4NikKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw1IEBACi1QQVNTOiBkYXRhZ3JpZCBKUyBiaW5k
aW5nIGlzIFtvYmplY3QgSFRNTERhdGFHcmlkRWxlbWVudF0KIFBBU1M6IEluaXRpYWwgdmFsdWUg
b2YgZGF0YWdyaWQuY29sdW1ucyBpcyBkZWZpbmVkLgotUEFTUzogZGF0YWdyaWQuY29sdW1ucyBK
UyBiaW5kaW5nIGlzIFtvYmplY3QgRGF0YUdyaWRDb2x1bW5MaXN0XQogUEFTUzogSW5pdGlhbCBs
ZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAyLgotUEFTUzogbmV3Q29sIEpTIGJpbmRpbmcg
aXMgW29iamVjdCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50XQogUEFTUzogV2UgaGF2ZSB0aHJlZSBj
b2x1bW5zIGluIHRoZSBsaXN0LgogUEFTUzogVGhlIGNvbHVtbidzIElEIGlzIGZyb20gYXMgZXhw
ZWN0ZWQuCiBQQVNTOiBUaGUgY29sdW1uJ3MgbGFiZWwgaXMgRnJvbSBhcyBleHBlY3RlZC4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWRvbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRh
R3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS5odG1sCShyZXZpc2lvbiA0NjA4NikKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5z
LWRvbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDI5ICs3LDE0IEBACiAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHRyeSB7CiAKICAgICAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICAgICAgewogICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGZ1bmN0aW9uIGV4cGVjdEJpbmRpbmcod2hhdCwgb2JqLCBjbGFzc25hbWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHZhciBkZXNjID0gU3RyaW5nKG9iaik7Ci0gICAgICAgICAgICB2YXIg
ZXhwZWN0ZWREZXNjID0gIltvYmplY3QgIiArIGNsYXNzbmFtZSArICJdIjsKLSAgICAgICAgICAg
IGlmIChkZXNjID09IGV4cGVjdGVkRGVzYykgewotICAgICAgICAgICAgICAgIGxvZygiUEFTUzog
IiArIHdoYXQgKyAiIEpTIGJpbmRpbmcgaXMgIiArIGRlc2MpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlz
ICIgKyBkZXNjICsgIihleHBlY3RlZCAiICsgZXhwZWN0ZWREZXNjICsgIikiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVGVzdCBiaW5kaW5nIG9mIDxk
YXRhZ3JpZD4gdG8gSlMgSFRNTERhdGFHcmlkRWxlbWVudDoKKwogICAgICAgICB2YXIgZGF0YWdy
aWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwotICAgICAgICBleHBlY3RCaW5k
aW5nKCJkYXRhZ3JpZCIsIGRhdGFncmlkLCAiSFRNTERhdGFHcmlkRWxlbWVudCIpOwotICAgICAg
ICAKKwogICAgICAgICAvLyBUZXN0IGluaXRpYWwgdmFsdWUuCiAgICAgICAgIGlmIChkYXRhZ3Jp
ZC5jb2x1bW5zICE9IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1
ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuIik7CkBAIC0zNyw5ICsyMiw2IEBACiAg
ICAgICAgICAgICBsb2coIkZBSUw6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuY29sdW1ucyB3
YXMgbnVsbC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3QgYmluZGluZyBvZiA8ZGNv
bD4gdG8gSlMgRGF0YUdyaWRDb2x1bW5MaXN0OgotICAgICAgICBleHBlY3RCaW5kaW5nKCJkYXRh
Z3JpZC5jb2x1bW5zIiwgZGF0YWdyaWQuY29sdW1ucywgIkRhdGFHcmlkQ29sdW1uTGlzdCIpOwot
ICAgICAgICAKICAgICAgICAgLy8gVGVzdCBpbml0aWFsIGxlbmd0aC4KICAgICAgICAgaWYgKGRh
dGFncmlkLmNvbHVtbnMubGVuZ3RoID09IDIpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogSW5p
dGlhbCBsZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAyLiIpOwpAQCAtNDksNyArMzEsNiBA
QAogICAgICAgICAKICAgICAgICAgLy8gVGVzdCBhZGRpbmcgYSBjb2x1bW4uCiAgICAgICAgIHZh
ciBuZXdDb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkY29sIik7Ci0gICAgICAgIGV4cGVj
dEJpbmRpbmcoIm5ld0NvbCIsIG5ld0NvbCwgIkhUTUxEYXRhR3JpZENvbEVsZW1lbnQiKTsKICAg
ICAgICAgbmV3Q29sLnNldEF0dHJpYnV0ZSgiaWQiLCAiZGF0ZSIpOwogICAgICAgICBuZXdDb2wu
c2V0QXR0cmlidXRlKCJsYWJlbCIsICJEYXRlIFJlY2VpdmVkIik7CiAgICAgICAgIG5ld0NvbC5z
ZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOwpAQCAtMTE3LDExICs5OCw3IEBACiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6IFRoZXJlIGlzIGEgcHJpbWFyeSBjb2x1
bW4sIGJ1dCB0aGVyZSBzaG91bGQgbm90IGJlLiIpOwogICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRo
cmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgICAgICAgfQotICAgICAgICAKKyAgICAK
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWREYXRhU291cmNl
LWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYwODYp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkRGF0
YVNvdXJjZS1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsNiBAQAogICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAK
ICAgICAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICAgICAgewogICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtc2cgKyAiXG4iKSk7CkBAIC0xNiw3ICsxNCw3IEBACiAgICAgICAgIHZhciBkYXRh
Z3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CiAKICAgICAgICAgLy8gVGVz
dCBpbml0aWFsIHZhbHVlLgotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gbnVs
bCkgeworICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBudWxsKSB7CiAgICAgICAg
ICAgICBsb2coIlBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSBpcyBu
dWxsLiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbG9nKCJGQUlMOiBJbml0aWFs
IHZhbHVlIG9mIGRhdGFncmlkLmRhdGFTb3VyY2Ugd2FzIG5vdCBudWxsLiBXYXMgIiArIGRhdGFn
cmlkLmRhdGFTb3VyY2UgKyAiLiIpOwpAQCAtMjQsMTggKzIyLDE4IEBACiAKICAgICAgICAgLy8g
VGVzdCBzZXR0aW5nIHRvIGEgSlMgbnVtYmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2Ug
PSAxMDsKLSAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IDEwKSB7CisgICAgICAg
IGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IDEwKSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6
IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgbnVtYmVyLiIpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRp
bmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhIG51bWJlci4iKTsKKyAgICAgICAgICAgIGxvZygi
RkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhIG51
bWJlci4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyB0byBhIEpTIG51
bWJlcgogICAgICAgICBkYXRhZ3JpZC5kYXRhU291cmNlID0gIlRlc3QgU3RyaW5nIjsKLSAgICAg
ICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09ICJUZXN0IFN0cmluZyIpIHsKKyAgICAgICAg
aWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT0gIlRlc3QgU3RyaW5nIikgewogICAgICAgICAgICAg
bG9nKCJQQVNTOiBBbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhIHN0cmlu
Zy4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBh
bGxvdyBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBzdHJpbmcuIik7CisgICAgICAg
ICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3Vy
Y2UgdG8gYSBzdHJpbmcuIik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHNldHRpbmcg
ZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuCkBAIC00NCwxOSArNDIsMTUgQEAKICAgICAgICAgaWYg
KGRhdGFncmlkLmRhdGFTb3VyY2UgPT0gZGF0YVNvdXJjZSkgewogICAgICAgICAgICAgbG9nKCJQ
QVNTOiBBbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cg
c2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVjdC4iKTsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0
byBhbiBvYmplY3QuIik7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBUZXN0IHNldHRpbmcgZGF0
YVNvdXJjZSB0byBudWxsLgorICAgICAgICAvLyBUZXN0IHNldHRpbmcgZGF0YVNvdXJjZSB0byBh
biBvYmplY3QuCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSBudWxsOwotICAgICAgICBp
ZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gbnVsbCkgeworICAgICAgICBpZiAoZGF0YWdyaWQu
ZGF0YVNvdXJjZSA9PSBudWxsKSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0
dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIG51bGwuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRh
U291cmNlIHRvIG51bGwuIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIH0gY2F0Y2gg
KGV4Y2VwdGlvbikgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaHJldyBleGNlcHRpb24gIiAr
IGV4Y2VwdGlvbik7CisgICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3dlZCBzZXR0
aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfQogICAgIDwvc2Ny
aXB0PgogPC9ib2R5Pgo=
</data>
<flag name="review"
          id="17354"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33090</attachid>
            <date>2009-07-20 09:39:42 -0700</date>
            <delta_ts>2009-07-20 09:57:26 -0700</delta_ts>
            <desc>patch, with missing file added</desc>
            <filename>dataGridV8_take4.patch</filename>
            <type>text/plain</type>
            <size>48586</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDctMjAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOiBNYWRlIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEgcHV0ICNpZidzIGFyb3Vu
ZCBjb25kaXRpb25hbCBhdHRyaWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDogQWRkIGJpbmRpbmdzIGZyb20gSFRNTCB0YWdzIHRvIGRh
dGFncmlkIHRlbXBsYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVt
cGxhdGUpOiBDdXN0b21pemUgZGF0YWdyaWQgdGVtcGxhdGUuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWRE
YXRhU291cmNlKQorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0
YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNl
Ojp+VjhEYXRhR3JpZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09V
UkNFIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRh
dGFncmlkIHN0dWZmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaDogRGVjbGFyZSBtb3JlIGFjY2Vzc29ycy4gQ29uZGl0aW9uYWxpemUuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3Rv
bS5jcHA6IEZpbGwgaW4gZGF0YVNvdXJjZSBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpB
Q0NFU1NPUl9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKwog
MjAwOS0wNy0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2MTI1KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYwMyw2ICs2MDMsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZl
ci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlz
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50
TG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhE
T01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAnLApAQCAtNjk1LDYgKzY5Niw4IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4Q29uc29sZU1lc3NhZ2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbnNv
bGVNZXNzYWdlLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291
cmNlLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2Uu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOERPTU1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwJywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQkocmV2aXNpb24gNDYxMjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDE4IEBAIHN1
YiBHZXRJbXBsZW1lbnRhdGlvbkZpbGVOYW1lCiAgICAgcmV0dXJuICIke2lmYWNlfS5oIjsKIH0K
IAorIyBJZiB0aGUgbm9kZSBoYXMgYSBbQ29uZGl0aW9uYWw9WFhYXSBhdHRyaWJ1dGUsIHJldHVy
bnMgYW4gIkVOQUJMRShYWFgpIiBzdHJpbmcgZm9yIHVzZSBpbiBhbiAjaWYuCitzdWIgR2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZworeworICAgIG15ICRub2RlID0gc2hpZnQ7CisgICAgbXkgJGNv
bmRpdGlvbmFsID0gJG5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9Owor
ICAgIGlmICgkY29uZGl0aW9uYWwpIHsKKyAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4o
IikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKwogc3ViIEdlbmVyYXRlSGVhZGVy
CiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMjU3LDE3ICsyNjksMTIgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgJGNvZGVHZW5lcmF0b3ItPkFkZE1ldGhvZHNDb25zdGFudHNBbmRB
dHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMoJGRhdGFOb2RlKTsKIAogICAgIG15ICRoYXNMZWdh
Y3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQi
fTsKLSAgICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9OworICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKIAogICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIg
dGVtcGxhdGUKICAgICBAaGVhZGVyQ29udGVudCA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0
ZSk7CiAKLSAgICBteSAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgaWYgKCRjb25kaXRpb25hbCkg
ewotICAgICAgICAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVO
QUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIik7Ci0gICAgfQot
CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4j
aWZuZGVmICRjbGFzc05hbWUiIC4gIl9IIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
I2RlZmluZSAkY2xhc3NOYW1lIiAuICJfSFxuXG4iKTsKIApAQCAtMzEwLDcgKzMxNyw3IEBAIEVO
RAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjZW5kaWYgLy8gJGNsYXNzTmFtZSIgLiAiX0hcbiIpOwogCi0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29u
ZGl0aW9uYWw7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKIApAQCAtOTAzLDEz
NCArOTEwLDEzOCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgICAgICAg
ICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fV1JJVEUiOwogICAgICAgICB9IGVsc2lm
ICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewogICAgICAgICAgICAg
JGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7Ci0gICAgICAgIGlmICghKCRhdHRy
aWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9
KSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6QUxMX0NBTl9XUklURSI7
CisgICAgICAgICAgICBpZiAoISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAh
KCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkpIHsKKyAgICAgICAgICAgICAgICAkYWNjZXNzQ29u
dHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAg
ICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBST0hJQklUU19PVkVSV1JJVElORyI7Ci0gICAg
fQotICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPigi
IC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7CisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2Fs
bG93U2hhZG93aW5nIn0pIHsKKyAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBS
T0hJQklUU19PVkVSV1JJVElORyI7CisgICAgICAgIH0KKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wg
PSAic3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIp
IjsKIAotICAgIG15ICRjdXN0b21BY2Nlc3NvciA9Ci0gICAgICAgICRhdHRyRXh0LT57IkN1c3Rv
bSJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8Ci0gICAgICAgICRh
dHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9t
In0gfHwKLSAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fAotICAgICAgICAk
YXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICIiOwotICAgIGlmICgkY3Vz
dG9tQWNjZXNzb3IgZXEgMSkgewotICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24s
IGludGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKLSAgICAgICAgJGN1c3RvbUFjY2Vz
c29yID0gJGludGVyZmFjZU5hbWUgLiBXS191Y2ZpcnN0KCRhdHRyTmFtZSk7Ci0gICAgfQotCi0g
ICAgbXkgJGdldHRlcjsKLSAgICBteSAkc2V0dGVyOwotICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6
Tm9uZSI7Ci0gICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7Ci0KLSAgICAjIENoZWNrIGF0dHJp
YnV0ZXMuCi0gICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKLSAgICAgICAgJHByb3BB
dHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKLSAgICB9Ci0gICAgaWYgKCRhdHRyRXh0LT57IlY4RGlz
YWxsb3dTaGFkb3dpbmcifSkgewotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udERlbGV0
ZSI7Ci0gICAgfQotCi0gICAgbXkgJG9uX3Byb3RvID0gIjAgLyogb24gaW5zdGFuY2UgKi8iOwot
ICAgIG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCAvKiBubyBk
YXRhICovIjsKLQotICAgICMgQ29uc3RydWN0b3IKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7Ci0gICAgICAgIG15ICRjb25zdHJ1Y3RvclR5
cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlKTsKLSAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAg
ICAgICBteSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOwotICAgICAg
ICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0b3JJbmRleH0iOwotICAgICAgICAk
Z2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yR2V0dGVyIjsKLSAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgJHByb3BBdHRy
ID0gInY4OjpSZWFkT25seSI7Ci0KLSAgICAjIEV2ZW50TGlzdGVuZXJzCi0gICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewotICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICRnZXR0
ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZlbnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOwot
ICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5kb3dFdmVudEhhbmRsZXJB
Y2Nlc3NvclNldHRlciI7Ci0gICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFbGVt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFu
Y2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRnJhbWVTZXRFbGVtZW50IikgewotICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JH
ZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRI
YW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBteSAkY3Vz
dG9tQWNjZXNzb3IgPQorICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKKyAgICAg
ICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4
dC0+eyJDdXN0b21HZXR0ZXIifSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20i
fSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fAorICAgICAg
ICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fAorICAgICAgICAgICAgIiI7Cisg
ICAgICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgeworICAgICAgICAgICAgIyB1c2UgdGhl
IG5hbWluZyBjb252ZW5zaW9uLCBpbnRlcmZhY2UgKyAoY2FwaXRhbGl6ZSkgYXR0ciBuYW1lCisg
ICAgICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuIFdLX3VjZmlyc3Qo
JGF0dHJOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIG15ICRnZXR0ZXI7CisgICAgICAgIG15
ICRzZXR0ZXI7CisgICAgICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6Tm9uZSI7CisgICAgICAgIG15
ICRoYXNDdXN0b21TZXR0ZXIgPSAwOworCisgICAgICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KKyAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKKyAgICAgICAgICAgICRwcm9wQXR0
ciAuPSAifHY4OjpEb250RW51bSI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57
IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6
OkRvbnREZWxldGUiOworICAgICAgICB9CisKKyAgICAgICAgbXkgJG9uX3Byb3RvID0gIjAgLyog
b24gaW5zdGFuY2UgKi8iOworICAgICAgICBteSAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OklOVkFM
SURfQ0xBU1NfSU5ERVggLyogbm8gZGF0YSAqLyI7CisKKyAgICAgICAgIyBDb25zdHJ1Y3Rvcgor
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
KSB7CisgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0
cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICAkY29u
c3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CisgICAgICAgICAgICBteSAkY29uc3Ry
dWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOworICAgICAgICAgICAgJGRhdGEgPSAi
VjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsKKyAgICAgICAgICAgICRnZXR0ZXIg
PSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JH
ZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgICAgICRwcm9wQXR0
ciA9ICJ2ODo6UmVhZE9ubHkiOworCisgICAgICAgICMgRXZlbnRMaXN0ZW5lcnMKKyAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikg
eworICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAg
ICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5kb3dFdmVudEhhbmRsZXJB
Y2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhE
T01XaW5kb3dFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAgICAgICAgICB9IGVsc2lm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkRvY3Vt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEJvZHlFbGVtZW50IiB8fCAkaW50ZXJmYWNl
TmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEZy
YW1lU2V0RWxlbWVudCIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2
OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgJHNl
dHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRhdHRyTmFtZSBlcSAic2Vs
ZiIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgICAgICAg
ICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFj
Y2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgIyBDdXN0b20gR2V0dGVyIGFuZCBTZXR0ZXIKKyAgICAgICAgfSBlbHNpZiAo
JGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewogICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0
dGVyIjsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIg
YW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsKICAgICAgICAgICAgICAgICAkc2V0dGVyID0gIjAi
OwogICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwogICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKICAgICAg
ICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNz
b3JTZXR0ZXIiOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAjIEN1c3RvbSBHZXR0
ZXIgYW5kIFNldHRlcgotICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRy
RXh0LT57IlY4Q3VzdG9tIn0pIHsKLSAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1
c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgewotICAgICAgICAg
ICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHki
OwotICAgICAgICB9IGVsc2UgeworICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKKyAgICAgICAgfSBl
bHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21T
ZXR0ZXIifSkgewogICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7CisgICAgICAgICAg
ICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0
dGVyIjsKICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nv
cn1BY2Nlc3NvclNldHRlciI7CisKKyAgICAgICAgIyBDdXN0b20gR2V0dGVyCisgICAgICAgIH0g
ZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICAkZ2V0dGVy
ID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAg
ICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0
clNldHRlciI7CisKKyAgICAgICAgIyBSZXBsYWNlYWJsZQorICAgICAgICB9IGVsc2lmICgkYXR0
ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CisgICAgICAgICAgICAjIFJlcGxhY2VhYmxlIGFjY2Vz
c29yIGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJpYnV0ZS4K
KyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJO
YW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKworICAgICAgICAg
ICAgIyBNYXJrIHRvIGF2b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0
LgorICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7CisKKyAgICAgICAgICAgICMgSGFu
ZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgdXBzdHJlYW0g
YXMgUmVwbGFjZWFibGUuCisgICAgICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1Jl
cGxhY2VhYmxlXSBpcyBub3QgbWFya2VkIGFzIFJlYWRPbmx5CisgICAgICAgICAgICAjIHVwc3Ry
ZWFtIGFuZCByZWFjaCBwYXJpdHkuCisgICAgICAgICAgICBpZiAoISgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgeworICAgICAgICAgICAgICAg
ICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
IyBOb3JtYWwKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAgICAg
JHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRl
ciI7CiAgICAgICAgIH0KIAotICAgICMgQ3VzdG9tIFNldHRlcgotICAgIH0gZWxzaWYgKCRhdHRy
RXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0pIHsK
LSAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAkc2V0
dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwotCi0g
ICAgIyBDdXN0b20gR2V0dGVyCi0gICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVy
In0pIHsKLSAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFj
Y2Vzc29yR2V0dGVyIjsKLSAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAjIFJlcGxhY2VhYmxlCi0gICAgfSBl
bHNpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAjIFJlcGxhY2VhYmxl
IGFjY2Vzc29yIGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJp
YnV0ZS4KLSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0KLSAgICAgICAgIyBN
YXJrIHRvIGF2b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0LgotICAg
ICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKLQotICAgICAgICAjIEhhbmRsZSB0aGUgc3BlY2lh
bCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIHVwc3RyZWFtIGFzIFJlcGxhY2VhYmxl
LgotICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3Qg
bWFya2VkIGFzIFJlYWRPbmx5Ci0gICAgICAgICMgdXBzdHJlYW0gYW5kIHJlYWNoIHBhcml0eS4K
LSAgICAgICAgaWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFt
ZSBlcSAidG9wIikpIHsKKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYg
ISRoYXNDdXN0b21TZXR0ZXIpIHsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAg
ICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOwogICAgICAgICB9CiAKLSAgICAjIE5v
cm1hbAotICAgIH0gZWxzZSB7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUlu
dGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAkc2V0dGVyID0gIiR7aW50
ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKLSAgICB9Ci0KLSAg
ICBpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikgewot
ICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9u
bHkiOwotICAgIH0KKyAgICAgICAgIyBSZWFkIG9ubHkgYXR0cmlidXRlcworICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5
In0pIHsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgIH0KIAotICAgICMgUmVh
ZCBvbmx5IGF0dHJpYnV0ZXMKLSAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5
LyB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pIHsKLSAgICAgICAgJHNldHRlciA9ICIwIjsK
LSAgICB9CisgICAgICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJv
dG8KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7CisgICAgICAgICAgICAk
b25fcHJvdG8gPSAiMSAvKiBvbiBwcm90byAqLyI7CisgICAgICAgIH0KIAotICAgICMgQW4gYWNj
ZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJvdG8KLSAgICBpZiAoJGF0dHJFeHQtPnsi
djhPblByb3RvIn0pIHsKLSAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8gKi8iOwot
ICAgIH0KKyAgICAgICAgbXkgJGNvbW1lbnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAo
VHlwZTogJyIgLiAkYXR0cmlidXRlLT50eXBlIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKKyAg
ICAgICAgCisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogCi0gICAgbXkgJGNvbW1lbnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAoVHlwZTog
JyIgLiAkYXR0cmlidXRlLT50eXBlIC4KLSAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRy
OiAnIiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwotICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAg
IC8vICRjb21tZW50SW5mbwogICB7ICIkYXR0ck5hbWUiLAogICAgICRnZXR0ZXIsCkBAIC0xMDQw
LDYgKzEwNTEsNyBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwKICAgICAkb25fcHJvdG8g
fSwKIEVORAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQogfQogCkBAIC0x
MDU0LDcgKzEwNjYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIG15ICRjbGFz
c0luZGV4ID0gdWMoJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRpbnRlcmZhY2VOYW1lKSk7
CiAKICAgICBteSAkaGFzTGVnYWN5UGFyZW50ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTGVnYWN5UGFyZW50In07Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKyAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRkYXRhTm9kZSk7CiAKICAgICBAYWxs
UGFyZW50cyA9ICRjb2RlR2VuZXJhdG9yLT5GaW5kUGFyZW50c1JlY3Vyc2l2ZWx5KCRkYXRhTm9k
ZSk7CiAKQEAgLTEwNjcsMTEgKzEwNzksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgIiNpbmNsdWRlIFwiVjhCaW5kaW5nLmhcIlxuXG4iIC4KICAgICAgICAgICIjdW5k
ZWYgTE9HXG5cbiIpOwogCi0gICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgIGlmICgkY29u
ZGl0aW9uYWwpIHsKLSAgICAgICAgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9p
bigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKLSAgICAg
ICAgcHVzaChAaW1wbEZpeGVkSGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxu
Iik7Ci0gICAgfQorICAgIHB1c2goQGltcGxGaXhlZEhlYWRlciwgIlxuI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAogICAgIGlmICgkY2xhc3NO
YW1lID1+IC9eVjhTVkdBbmltYXRlZC8pIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JTVkdBbmlt
YXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwpAQCAtMTM4Nyw3ICsxMzk1LDcgQEAgRU5ECiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiBFTkQKIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5k
aWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbDsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKIApAQCAtMjA0MCw4ICsyMDQ4LDggQEAgc3ViIFJldHVy
bk5hdGl2ZVRvSlNWYWx1ZQogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiUkdCQ29sb3IiKSB7
Ci0gICAgICAgIG15ICRjb25zdHJ1Y3QgPSAiUmVmUHRyPFJHQkNvbG9yPiByZ2Jjb2xvciA9IFJH
QkNvbG9yOjpjcmVhdGUoJHZhbHVlKTtcbiI7DQotICAgICAgICBteSAkY29udmVydCA9ICJWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6UkdCQ09MT1IsIFdURjo6
Z2V0UHRyKHJnYmNvbG9yKSkiOw0KKyAgICAgICAgbXkgJGNvbnN0cnVjdCA9ICJSZWZQdHI8UkdC
Q29sb3I+IHJnYmNvbG9yID0gUkdCQ29sb3I6OmNyZWF0ZSgkdmFsdWUpO1xuIjsKKyAgICAgICAg
bXkgJGNvbnZlcnQgPSAiVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6OlJHQkNPTE9SLCBXVEY6OmdldFB0cihyZ2Jjb2xvcikpIjsKICAgICAgICAgcmV0dXJuICRj
b25zdHJ1Y3QgLiAkaW5kZW50IC4gInJldHVybiAiIC4gJGNvbnZlcnQ7CiAgICAgfQogCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCShyZXZpc2lvbiA0NjEyNSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDYgKzE1MywxMSBAQAogI2luY2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisjaW5jbHVkZSAi
RGF0YUdyaWRDb2x1bW4uaCIKKyNpbmNsdWRlICJEYXRhR3JpZENvbHVtbkxpc3QuaCIKKyNlbmRp
ZiAvLyBEQVRBR1JJRAorCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3Jh
Z2UuaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDQ2MTI1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDEzIEBAIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEQKICAgICBjYXNlIFY4Q2xhc3NJbmRl
eDo6Q0xJRU5UUkVDVExJU1Q6CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUo
KS0+U2V0SW5kZXhlZFByb3BlcnR5SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
Q2xpZW50UmVjdExpc3QpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyNpZiBFTkFC
TEUoREFUQUdSSUQpCisgICAgY2FzZSBWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVDoK
KyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVy
dHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3Qp
KTsKKyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3Bl
cnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCkp
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC03ODksNyArNzk1LDE4IEBAIGJvb2wgVjhET01XcmFwcGVyOjppc1dyYXBw
ZXJPZlR5cGUodjg6OkgKICNkZWZpbmUgRk9SX0VBQ0hfVklERU9fVEFHKG1hY3JvKQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisjZGVmaW5lIEZPUl9FQUNIX0RBVEFHUklEX1RBRyht
YWNybykgICAgICAgICAgICAgICBcCisgIG1hY3JvKGRhdGFncmlkLCBEQVRBR1JJRCkgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIG1hY3JvKGRjZWxsLCBEQVRBR1JJRENFTEwpICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIG1hY3JvKGRjb2wsIERBVEFHUklEQ09MKSAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIG1hY3JvKGRyb3csIERBVEFHUklEUk9XKQorI2Vsc2UKKyNkZWZpbmUg
Rk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKQorI2VuZGlmCisKICNkZWZpbmUgRk9SX0VBQ0hf
VEFHKG1hY3JvKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGT1JfRUFDSF9EQVRBR1JJ
RF9UQUcobWFjcm8pICAgICAgICAgICAgICAgICAgIFwKICAgICBtYWNybyhhLCBBTkNIT1IpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBtYWNybyhhcHBsZXQsIEFQUExFVCkg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBtYWNybyhhcmVhLCBBUkVBKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRh
R3JpZERhdGFTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
YXRhR3JpZERhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKKyNpbmNsdWRlICJW
OERhdGFHcmlkRGF0YVNvdXJjZS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxEYXRhR3JpZEVsZW1lbnQuaCIKKyNpbmNsdWRlICJW
OEhUTUxEYXRhR3JpZEVsZW1lbnQuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Y4RGF0
YUdyaWREYXRhU291cmNlOjpWOERhdGFHcmlkRGF0YVNvdXJjZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZGF0YVNvdXJjZSwgRnJhbWUqIGZyYW1lKQorICAgIDogbV9kYXRhU291cmNlKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT46Ok5ldyhkYXRhU291cmNlKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUp
Cit7CisjaWZuZGVmIE5ERUJVRworICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2JhbEhh
bmRsZShEQVRBU09VUkNFLCB0aGlzLCBtX2RhdGFTb3VyY2UpOworI2VuZGlmCit9CisKK1Y4RGF0
YUdyaWREYXRhU291cmNlOjp+VjhEYXRhR3JpZERhdGFTb3VyY2UoKQoreworI2lmbmRlZiBOREVC
VUcKKyAgICBWOEdDQ29udHJvbGxlcjo6dW5yZWdpc3Rlckdsb2JhbEhhbmRsZSh0aGlzLCBtX2Rh
dGFTb3VyY2UpOworI2VuZGlmCisgICAgbV9kYXRhU291cmNlLkRpc3Bvc2UoKTsKKyAgICBtX2Rh
dGFTb3VyY2UuQ2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKERBVEFHUklEKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNv
dXJjZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0
YVNvdXJjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFY4RGF0YUdy
aWREYXRhU291cmNlX2gKKyNkZWZpbmUgVjhEYXRhR3JpZERhdGFTb3VyY2VfaAorCisjaWYgRU5B
QkxFKERBVEFHUklEKQorCisjaW5jbHVkZSAiRGF0YUdyaWREYXRhU291cmNlLmgiCisjaW5jbHVk
ZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxE
YXRhR3JpZEVsZW1lbnQ7CisKK2NsYXNzIFY4RGF0YUdyaWREYXRhU291cmNlIDogcHVibGljIERh
dGFHcmlkRGF0YVNvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VjhEYXRh
R3JpZERhdGFTb3VyY2U+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YVNvdXJjZSwg
RnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOERhdGFH
cmlkRGF0YVNvdXJjZShkYXRhU291cmNlLCBmcmFtZSkpOworICAgIH0KKworICAgIHZpcnR1YWwg
flY4RGF0YUdyaWREYXRhU291cmNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNKU0RhdGFHcmlk
RGF0YVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4ganNEYXRhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU291cmNlOyB9CisKK3By
aXZhdGU6CisgICAgVjhEYXRhR3JpZERhdGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBG
cmFtZSopOworCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBtX2RhdGFTb3VyY2U7Cisg
ICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworfTsKKworaW5saW5lIFY4RGF0YUdyaWREYXRhU291
cmNlKiBhc1Y4RGF0YUdyaWREYXRhU291cmNlKERhdGFHcmlkRGF0YVNvdXJjZSogZGF0YVNvdXJj
ZSkKK3sKKyAgICBBU1NFUlQoZGF0YVNvdXJjZS0+aXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhEYXRhR3JpZERhdGFTb3VyY2UqPihkYXRhU291cmNl
KTsKK30KKworaW5saW5lIGNvbnN0IFY4RGF0YUdyaWREYXRhU291cmNlKiBhc1Y4RGF0YUdyaWRE
YXRhU291cmNlKGNvbnN0IERhdGFHcmlkRGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKK3sKKyAgICBB
U1NFUlQoZGF0YVNvdXJjZS0+aXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgVjhEYXRhR3JpZERhdGFTb3VyY2UqPihkYXRhU291cmNlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFHUklEKQor
I2VuZGlmIC8vIFY4RGF0YUdyaWREYXRhU291cmNlX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmgJKHJldmlzaW9uIDQ2MTI1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBWKEVWRU5UX0xJU1RFTkVSKSAgICAgICAgICAgICBcCiAgICAgVihOT0RFX0ZJTFRF
UikgICAgICAgICAgICAgICAgXAogICAgIFYoU0NSSVBUSU5TVEFOQ0UpICAgICAgICAgICAgIFwK
LSAgICBWKFNDUklQVFZBTFVFKQorICAgIFYoU0NSSVBUVkFMVUUpICAgICAgICAgICAgICAgIFwK
KyAgICBWKERBVEFTT1VSQ0UpCiAKIAogICAgIC8vIEhvc3QgaW5mb3JtYXRpb24gb2YgcGVyc2lz
dGVudCBoYW5kbGVzLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHJldmlzaW9uIDQ2MTI1KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKIAorI2lm
IEVOQUJMRShEQVRBR1JJRCkKKyNkZWZpbmUgREFUQUdSSURfSFRNTEVMRU1FTlRfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKEhUTUxEQVRBR1JJRENF
TExFTEVNRU5ULCBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudCkgICAgICAgICAgICAgICAgIFwKKyAg
ICBWKEhUTUxEQVRBR1JJRENPTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQpICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBWKEhUTUxEQVRBR1JJREVMRU1FTlQsIEhUTUxEYXRhR3JpZEVs
ZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKEhUTUxEQVRBR1JJRFJPV0VM
RU1FTlQsIEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQpCisjZGVmaW5lIERBVEFHUklEX05PTk5PREVf
VFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihE
QVRBR1JJRENPTFVNTiwgRGF0YUdyaWRDb2x1bW4pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgVihEQVRBR1JJRENPTFVNTkxJU1QsIERhdGFHcmlkQ29sdW1uTGlzdCkK
KyNlbHNlCisjZGVmaW5lIERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpCisjZGVmaW5lIERB
VEFHUklEX05PTk5PREVfVFlQRVMoVikKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogI2Rl
ZmluZSBWSURFT19IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFYoSFRNTEFVRElPRUxFTUVOVCwgSFRNTEF1ZGlvRWxlbWVudCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzksOSArOTMsNyBAQCB0eXBlZGVm
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihBVFRSLCBBdHRyKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
VihDSEFSQUNURVJEQVRBLCBDaGFyYWN0ZXJEYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgVihDREFUQVNFQ1RJT04sIENEQVRBU2VjdGlvbikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihDT01NRU5ULCBDb21tZW50KSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYo
REFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KLSAgICBWKERBVEFHUklEQ09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5MaXN0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKENPTU1FTlQsIENvbW1lbnQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERP
Q1VNRU5ULCBEb2N1bWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKERPQ1VNRU5URlJBR01FTlQsIERvY3VtZW50RnJhZ21lbnQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPQ1VNRU5UVFlQRSwgRG9jdW1lbnRU
eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTEwMywxMCAr
MTE1LDYgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYo
SFRNTEJSRUxFTUVOVCwgSFRNTEJSRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFYoSFRNTEJVVFRPTkVMRU1FTlQsIEhUTUxCdXR0b25FbGVtZW50KSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTENBTlZBU0VMRU1FTlQsIEhU
TUxDYW52YXNFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRN
TERBVEFHUklEQ0VMTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENlbGxFbGVtZW50KSAgICAgICAgICAg
ICAgICAgXAotICAgIFYoSFRNTERBVEFHUklEQ09MRUxFTUVOVCwgSFRNTERhdGFHcmlkQ29sRWxl
bWVudCkgICAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRNTERBVEFHUklERUxFTUVOVCwgSFRN
TERhdGFHcmlkRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoSFRNTERB
VEFHUklEUk9XRUxFTUVOVCwgSFRNTERhdGFHcmlkUm93RWxlbWVudCkgICAgICAgICAgICAgICAg
ICAgXAogICAgIFYoSFRNTERJUkVDVE9SWUVMRU1FTlQsIEhUTUxEaXJlY3RvcnlFbGVtZW50KSAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTERJVkVMRU1FTlQsIEhUTUxEaXZFbGVt
ZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTERMSVNU
RUxFTUVOVCwgSFRNTERMaXN0RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApAQCAtMTU0LDYgKzE2Miw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGwKICAgICBWKEhUTUxUSVRMRUVMRU1FTlQsIEhUTUxUaXRsZUVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxVTElTVEVMRU1FTlQsIEhUTUxVTGlz
dEVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxFTEVN
RU5ULCBIVE1MRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBEQVRBR1JJRF9IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBWSURFT19IVE1MRUxFTUVOVF9UWVBFUyhWKQogCiAj
aWYgRU5BQkxFKFNWR19BTklNQVRJT04pCkBAIC0zNzYsNiArMzg1LDcgQEAgdHlwZWRlZiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoWFBBVEhSRVNVTFQsIFhQYXRoUmVz
dWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoWFNM
VFBST0NFU1NPUiwgWFNMVFByb2Nlc3NvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIEFDVElWRV9ET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIERBVEFHUklEX05PTk5PREVfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFZJREVPX05P
Tk5PREVfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMo
VikKQEAgLTM4OSwxNCArMzk5LDE0IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGwKICAgICBWKFNRTFRSQU5TQUNUSU9OLCBTUUxUcmFuc2FjdGlvbikKICNlbHNlCiAj
ZGVmaW5lIERPTV9PQkpFQ1RfREFUQUJBU0VfVFlQRVMoVikKLSNlbmRpZg0KLQ0KLSNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpDQotI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKFNUT1JBR0UsIFN0b3Jh
Z2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0g
ICAgVihTVE9SQUdFRVZFTlQsIFN0b3JhZ2VFdmVudCkNCi0jZWxzZQ0KLSNkZWZpbmUgRE9NX09C
SkVDVF9TVE9SQUdFX1RZUEVTKFYpDQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
CisjZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihTVE9SQUdFRVZFTlQs
IFN0b3JhZ2VFdmVudCkKKyNlbHNlCisjZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhW
KQogI2VuZGlmCiAKICNkZWZpbmUgRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDYsOCArNDA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soTm9kZUZpbHRlckFjY2VwdE5vZGUpOwogCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOwotCiAgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soSFRNTEZvcm1FbGVtZW50U3VibWl0KTsKIAogICAgICAgICBERUNMQVJFX05B
TUVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpOwpAQCAtNDUyLDYgKzQ1MCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVzdWx0U2V0Um93
TGlzdEl0ZW0pOwogCiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoQ2xp
ZW50UmVjdExpc3QpOworICAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisgICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1IoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOworICAgICAg
ICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7Cisg
ICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7
CisjZW5kaWYgICAgICAKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgREVDTEFS
RV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihTdG9yYWdlKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlk
Q29sdW1uTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEYXRhR3JpZENv
bHVtbkxpc3QuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KQoreworICAgIElOQ19T
VEFUUygiRGF0YUdyaWRDb2x1bW5MaXN0LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOworICAgIERh
dGFHcmlkQ29sdW1uTGlzdCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8RGF0YUdyaWRDb2x1bW5MaXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwg
aW5mby5Ib2xkZXIoKSk7CisgICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbShp
bmRleCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9CisKK05BTUVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpCit7CisgICAgSU5DX1NUQVRTKCJEYXRhR3JpZENv
bHVtbkxpc3QuTmFtZWRQcm9wZXJ0eUdldHRlciIpOworICAgIC8vIFNlYXJjaCB0aGUgcHJvdG90
eXBlIGNoYWluIGZpcnN0LgorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8u
SG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKTsKKyAg
ICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIAorICAg
IC8vIFRoZW4gbG9vayBmb3IgSURMIGRlZmluZWQgcHJvcGVydGllcyBvbiB0aGUgb2JqZWN0IGl0
c2VsZi4KKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0
eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAg
CisgICAgLy8gRmluYWxseSwgbG9vayB1cCBhIGNvbHVtbiBieSBuYW1lLgorICAgIERhdGFHcmlk
Q29sdW1uTGlzdCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGF0
YUdyaWRDb2x1bW5MaXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwgaW5mby5I
b2xkZXIoKSk7CisgICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbVdpdGhOYW1l
KHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiBFTkFCTEUoREFUQUdSSUQp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFH
cmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2MTI1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksMjcgKzI5LDQyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFHcmlkRWxlbWVu
dC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJWOERhdGFHcmlk
RGF0YVNvdXJjZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0
b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCisjaWYgRU5BQkxFKERBVEFHUklE
KQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFDQ0VTU09SX0dFVFRFUihIVE1MRGF0YUdyaWRF
bGVtZW50RGF0YVNvdXJjZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0YUdyaWRFbGVt
ZW50LmRhdGFTb3VyY2UuX2dldCIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworICAgIEhUTUxEYXRhR3Jp
ZEVsZW1lbnQqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRN
TERhdGFHcmlkRWxlbWVudD4oaG9sZGVyKTsKKyAgICBEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFT
b3VyY2UgPSBpbXAtPmRhdGFTb3VyY2UoKTsKKyAgICBpZiAoZGF0YVNvdXJjZSAmJiBkYXRhU291
cmNlLT5pc0pTRGF0YUdyaWREYXRhU291cmNlKCkpCisgICAgICAgIHJldHVybiBhc1Y4RGF0YUdy
aWREYXRhU291cmNlKGRhdGFTb3VyY2UpLT5qc0RhdGFTb3VyY2UoKTsKICAgICByZXR1cm4gdjg6
Ok51bGwoKTsKIH0KIAogQUNDRVNTT1JfU0VUVEVSKEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291
cmNlKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxEYXRhR3JpZEVsZW1lbnQuZGF0YVNvdXJj
ZS5fc2V0Iik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgSFRNTERhdGFHcmlkRWxlbWVudCogaW1w
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRGF0YUdyaWRFbGVt
ZW50Pihob2xkZXIpOworICAgIFBhc3NSZWZQdHI8RGF0YUdyaWREYXRhU291cmNlPiBkYXRhU291
cmNlOworICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKSB7CisgICAgICAgIEZyYW1lICpmcmFtZSA9
IGltcC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAgICAgZGF0YVNvdXJjZSA9IFY4RGF0YUdy
aWREYXRhU291cmNlOjpjcmVhdGUodmFsdWUsIGZyYW1lKTsKKyAgICB9CisgICAgaW1wLT5zZXRE
YXRhU291cmNlKGRhdGFTb3VyY2UuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiBFTkFCTEUoREFUQUdSSUQpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjEyNSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisy
MDA5LTA3LTIwICBKZW5zIEFsZmtlICA8c25lakBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgVjggYmluZGluZ3MgZm9y
IERhdGFHcmlkIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjczODMKKyAgICAgICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9t
aXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTY3MzAKKworICAgICAgICBUZXN0czogRW5oYW5jZWQgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC8qCisgICAgICAgIHRvIGhhbmRs
ZSBleGNlcHRpb25zLCBjaGVjayBhcHByb3ByaWF0ZSBKUyBwcm90b3R5cGVzLCBhbmQKKyAgICAg
ICAgdGVzdCBjb2x1bW4tbGlzdCdzIGl0ZW0oKSBtZXRob2QgYXMgd2VsbCBhcyBhcnJheS1pbmRl
eGluZy4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRD
b2x1bW5zLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdy
aWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWw6
CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
ZG9tLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50
L0RhdGFHcmlkQ29sdW1ucy1kb20uaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdy
aWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sOgorCiAyMDA5LTA3LTE5ICBT
aW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDYxMjUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUg
b2YgZGF0YWdyaWQuY29sdW1ucyAKIFBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNv
bHVtbnMgaXMgMC4KIFBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhh
dmUgb25lIGNvbHVtbiBpbiB0aGUgbGlzdC4KK1BBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBp
cyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBp
bmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29s
dW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBh
ZGQuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5z
LWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYxMjUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1u
cy1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAogICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKKyAgICAg
ICAgdHJ5IHsKKwogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTQ2LDE3ICs0OCwyNyBAQAogICAg
ICAgICAgICAgbG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBo
YXZlICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBn
b3QgYmFjayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoZGF0
YWdyaWQuY29sdW1uc1swXSA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8g
bWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0
aGUgbGlzdC4KKyAgICAgICAgdmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgw
KTsKKyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIGxvZygi
UEFTUzogVGhlIGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJv
bSBhZGQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBj
b2x1bW4gYXQgaXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4
cGVjdGVkICgiICsgY29sdW1uICsgIikuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFVzZSBbMF0gdG8gbWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQg
aXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29s
dW1uc1swXTsKKyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKICAgICAgICAgICAg
IGxvZygiUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJh
Y2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6
IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKKyAg
ICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpbmRleCAwICgiICsgZ290Q29sdW1u
ICsgIikgaXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wi
XSA9PSBjb2x1bW4pIHsKKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJv
bWNvbCJdOworICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikgewogICAgICAgICAgICAg
bG9nKCJQQVNTOiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUg
d2UgZ290IGJhY2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBs
b2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2VkIGJ5IG5hbWUgaXMgbm90IHRoZSBv
bmUgd2UgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hl
biByZWZlcmVuY2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3
ZSBleHBlY3RlZCAoIiArIGNvbHVtbiArICIpLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RXhhbWluZSB0aGUgY29sdW1uJ3MgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hh
dCB3ZSBleHBlY3RlZC4KQEAgLTk3LDYgKzEwOSwxMCBAQAogICAgICAgICAgICAgbG9nKCJGQUlM
OiBUaGUgY29sdW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAg
ICAgICAgIH0KIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxv
ZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1h
dHRyaWJ1dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERh
dGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNp
b24gNDYxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0Rh
dGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYg
KzgsOCBAQAogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICB9CiAKKyAgICAgICAgdHJ5eworCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAt
NzQsNiArNzYsMTAgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBp
cyBub3QgdGhlIHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKKyAg
ICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3
IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0
YUdyaWRDb2x1bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MTI1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRhdGFncmlk
IEpTIGJpbmRpbmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlh
bCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRhZ3JpZC5j
b2x1bW5zIEpTIGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJ
bml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdDb2wgSlMg
YmluZGluZyBpcyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZl
IHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJv
bSBhcyBleHBlY3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVj
dGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRh
R3JpZENvbHVtbnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2
MTI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMjkgQEAKICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdHJ5IHsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKICAgICAgICAgfQotCisgICAg
ICAgIAorICAgICAgICBmdW5jdGlvbiBleHBlY3RCaW5kaW5nKHdoYXQsIG9iaiwgY2xhc3NuYW1l
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZGVzYyA9IFN0cmluZyhvYmopOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkRGVzYyA9ICJbb2JqZWN0ICIgKyBjbGFzc25hbWUgKyAiXSI7Cisg
ICAgICAgICAgICBpZiAoZGVzYyA9PSBleHBlY3RlZERlc2MpIHsKKyAgICAgICAgICAgICAgICBs
b2coIlBBU1M6ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlzICIgKyBkZXNjKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgd2hhdCArICIgSlMg
YmluZGluZyBpcyAiICsgZGVzYyArICIoZXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVzYyArICIpIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgYmlu
ZGluZyBvZiA8ZGF0YWdyaWQ+IHRvIEpTIEhUTUxEYXRhR3JpZEVsZW1lbnQ6CiAgICAgICAgIHZh
ciBkYXRhZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0KKyAgICAgICAg
ZXhwZWN0QmluZGluZygiZGF0YWdyaWQiLCBkYXRhZ3JpZCwgIkhUTUxEYXRhR3JpZEVsZW1lbnQi
KTsKKyAgICAgICAgCiAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYg
KGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0
aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKQEAgLTIyLDYgKzM3
LDkgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5j
b2x1bW5zIHdhcyBudWxsLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVGVzdCBiaW5kaW5n
IG9mIDxkY29sPiB0byBKUyBEYXRhR3JpZENvbHVtbkxpc3Q6CisgICAgICAgIGV4cGVjdEJpbmRp
bmcoImRhdGFncmlkLmNvbHVtbnMiLCBkYXRhZ3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5M
aXN0Iik7CisgICAgICAgIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAg
ICBpZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQ
QVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC0zMSw2
ICs0OSw3IEBACiAgICAgICAgIAogICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAg
ICAgICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKKyAgICAg
ICAgZXhwZWN0QmluZGluZygibmV3Q29sIiwgbmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVu
dCIpOwogICAgICAgICBuZXdDb2wuc2V0QXR0cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAg
IG5ld0NvbC5zZXRBdHRyaWJ1dGUoImxhYmVsIiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAg
bmV3Q29sLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CkBAIC05OCw3ICsxMTcsMTEgQEAK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmlt
YXJ5IGNvbHVtbiwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAK
KyAgICAgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERh
dGFTb3VyY2UtYmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lv
biA0NjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0
YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBA
CiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAg
dmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAg
ICAvLyBUZXN0IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNl
ID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsK
ICAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291
cmNlIGlzIG51bGwuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6
IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAi
ICsgZGF0YWdyaWQuZGF0YVNvdXJjZSArICIuIik7CkBAIC0yMiwxOCArMjQsMTggQEAKIAogICAg
ICAgICAvLyBUZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0
YVNvdXJjZSA9IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAxMCkgewor
ICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKICAgICAgICAgICAgIGxv
ZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIu
Iik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxs
b3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAg
ICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNl
IHRvIGEgbnVtYmVyLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRv
IGEgSlMgbnVtYmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmci
OwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7Cisg
ICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09PSAiVGVzdCBTdHJpbmciKSB7CiAgICAg
ICAgICAgICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRv
IGEgc3RyaW5nLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBE
aWQgbm90IGFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIp
OworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQu
ZGF0YVNvdXJjZSB0byBhIHN0cmluZy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qg
c2V0dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KQEAgLTQyLDE1ICs0NCwxOSBAQAogICAg
ICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAg
ICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9i
amVjdC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5v
dCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7Cisg
ICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRh
U291cmNlIHRvIGFuIG9iamVjdC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0
dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KKyAgICAgICAgLy8gVGVzdCBzZXR0aW5nIGRh
dGFTb3VyY2UgdG8gbnVsbC4KICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0g
ICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRh
dGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxs
b3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0
YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQg
bm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAg
ICAgPC9zY3JpcHQ+CiA8L2JvZHk+Cg==
</data>
<flag name="review"
          id="17418"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>