<?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>53577</bug_id>
          
          <creation_ts>2011-02-01 23:09:06 -0800</creation_ts>
          <short_desc>A little more Heap refactoring</short_desc>
          <delta_ts>2011-02-02 11:21:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>343877</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-01 23:09:06 -0800</bug_when>
    <thetext>A little more Heap refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343881</commentid>
    <comment_count>1</comment_count>
      <attachid>80894</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-01 23:18:05 -0800</bug_when>
    <thetext>Created attachment 80894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343882</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-01 23:20:59 -0800</bug_when>
    <thetext>Attachment 80894 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/Android.mk&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/JavaScriptCore/runtime/MarkedBlock.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:34:  BLOCK_SIZE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:36:  BLOCK_SIZE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:39:  BLOCK_OFFSET_MASK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:40:  BLOCK_MASK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:41:  MINIMUM_CELL_SIZE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:42:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/runtime/MarkedBlock.h:42:  CELL_ARRAY_LENGTH is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:43:  CELL_SIZE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:44:  SMALL_CELL_SIZE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:45:  CELL_MASK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:46:  CELL_ALIGN_MASK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:47:  CELLS_PER_BLOCK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:62:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MarkedBlock.h:63:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MarkedBlock.h:64:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MarkedBlock.h:65:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 17 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344073</commentid>
    <comment_count>3</comment_count>
      <attachid>80894</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-02 11:16:59 -0800</bug_when>
    <thetext>Comment on attachment 80894
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=80894&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/MarkedBlock.h:65
&gt;&gt; +        void setMarked(JSCell* cell);
&gt; 
&gt; The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

You don&apos;t need the parameter names here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344077</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-02 11:21:28 -0800</bug_when>
    <thetext>Committed r77391: &lt;http://trac.webkit.org/changeset/77391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80894</attachid>
            <date>2011-02-01 23:18:05 -0800</date>
            <delta_ts>2011-02-02 11:16:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53577-20110201231804.patch</filename>
            <type>text/plain</type>
            <size>32270</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzczNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAK
KzIwMTEtMDItMDEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGxpdHRsZSBtb3JlIEhl
YXAgcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUzNTc3CisgICAgICAgIAorICAgICAgICBTcGxpdCBvdXQgTWFya2VkQmxvY2sgaW50
byBpdHMgb3duIGZpbGUgLyBjbGFzcy4KKyAgICAgICAgCisgICAgICAgIERpZCB0aGUgZm9sbG93
aW5nIHJlbmFtZXM6CisgICAgICAgICAgICBpc0NlbGxNYXJrZWQgPT4gaXNNYXJrZWQKKyAgICAg
ICAgICAgIGNoZWNrTWFya0NlbGwgPT4gdGVzdEFuZFNldE1hcmtlZAorICAgICAgICAgICAgbWFy
a0NlbGwgPT4gc2V0TWFya2VkCisgICAgICAgICAgICBjZWxsT2Zmc2V0ID0+IGNlbGxOdW1iZXIK
KyAgICAgICAgICAgIGNvbGxlY3RvckJsb2NrID0+IGJsb2NrRm9yCisKKyAgICAgICAgKiBBbmRy
b2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSGVh
cC5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRNYXJrZWQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6Om1hcmtD
aGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6ZHJhaW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6TWFya1N0YWNrOjppbnRlcm5h
bEFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9NYXJrZWRCbG9jay5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvTWFya2VkQmxvY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpibG9ja0Zvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjZWxsTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6c2V0TWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQ2VsbEFsaWduZWQp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNQb3NzaWJsZUNlbGwpOgorICAgICAgICAq
IHJ1bnRpbWUvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmlzTWFy
a2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2V0TWFya2VkKToKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6OmlzTWFya2VkKToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmlzVmFsaWQpOgorICAg
ICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChKU0M6Ojo6dGFrZSk6CisgICAgICAgIChKU0M6
Ojo6c2V0KToKKwogMjAxMS0wMi0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc3Mjk3LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDc3MzYzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAg
TE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAlydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwIFwKIAlydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIFwKIAlydW50aW1lL0NhbGxEYXRhLmNwcCBcCisJcnVu
dGltZS9NYXJrZWRCbG9jay5jcHAgXAogCXJ1bnRpbWUvTWFya2VkU3BhY2UuY3BwIFwKIAlydW50
aW1lL0hlYXAuY3BwIFwKIAlydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3NzM2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODgsNiAr
ODgsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQm9vbGVhbk9i
amVjdC5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9D
YWxsRGF0YS5jcHAKKyAgICBydW50aW1lL01hcmtlZEJsb2NrLmNwcAogICAgIHJ1bnRpbWUvTWFy
a2VkU3BhY2UuY3BwCiAgICAgcnVudGltZS9IZWFwLmNwcAogICAgIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcmtlZEJsb2NrLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2Vk
QmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gNzczNjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTg1
LDYgKzE4NSw4IEBACiAgICAgICAgICAgICAncnVudGltZS9DYWxsRGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ3J1bnRpbWUvQ2FsbERhdGEuaCcsCiAgICAgICAgICAgICAncnVudGltZS9DbGFzc0lu
Zm8uaCcsCisgICAgICAgICAgICAncnVudGltZS9NYXJrZWRCbG9jay5jcHAnLAorICAgICAgICAg
ICAgJ3J1bnRpbWUvTWFya2VkQmxvY2suaCcsCiAgICAgICAgICAgICAncnVudGltZS9NYXJrZWRT
cGFjZS5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvTWFya2VkU3BhY2UuaCcsCiAgICAgICAg
ICAgICAncnVudGltZS9IZWFwLmNwcCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDc3MzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvQ2FsbERhdGEuY3BwIFwKKyAgICBy
dW50aW1lL01hcmtlZEJsb2NrLmNwcCBcCiAgICAgcnVudGltZS9NYXJrZWRTcGFjZS5jcHAgXAog
ICAgIHJ1bnRpbWUvSGVhcC5jcHAgXAogICAgIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiArNTk0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcTWFya2VkQmxvY2su
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXE1hcmtlZEJsb2NrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcTWFya2VkU3BhY2UuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NzM2
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDggQEAKIAkJMTRCRDVB
MzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRDVBMkIwQTNFOTFGNjAwQkFGNTlDIC8qIEpT
VmFsdWVSZWYuY3BwICovOyB9OwogCQkxNEJGQ0U2OTEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dD
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJG
Q0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8q
IEpJVFN0dWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1YnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEM4MjRBQjEyRjdDNzdFMDA4RjM1
RTAgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTRDODI0QUExMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmNwcCAq
LzsgfTsKKwkJMTRDODI0QUQxMkY3Qzc4NTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM4MjRBQzEyRjdDNzg1
MDA4RjM1RTAgLyogTWFya2VkQmxvY2suaCAqLzsgfTsKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNERE
QTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0RjM0ODhGMEU5NUVGOEEwMDM2NDhC
QyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjM0ODhFMEU5NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JI
ZWFwSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkx
NEY4QkEzRTEwN0VDODg2MDA5ODkyREMgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCOTA4RTdFRUNDMDAyM0U1RjYg
LyogRmFzdE1hbGxvYy5jcHAgKi87IH07CkBAIC03NTQsNiArNzU2LDggQEAKIAkJMTRCRDVBMkIw
QTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5jOyBuYW1lID0gdGVzdGFwaS5jOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGku
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDODI0QUExMkY3Qzc3RTAwOEYz
NUUwIC8qIE1hcmtlZEJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1hcmtlZEJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDODI0
QUMxMkY3Qzc4NTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBSZWdpc3RlckZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJGaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gdGVzdGFwaS5qczsgcGF0aCA9IEFQSS90
ZXN0cy90ZXN0YXBpLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERBODE4RTBE
OTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTgyNCw2ICsxODI4LDggQEAKIAkJCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9va3Vw
LmggKi8sCiAJCQkJMTRCNzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtl
ci5jcHAgKi8sCiAJCQkJMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01h
cmtlci5oICovLAorCQkJCTE0QzgyNEFBMTJGN0M3N0UwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5j
cHAgKi8sCisJCQkJMTRDODI0QUMxMkY3Qzc4NTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggKi8s
CiAJCQkJMTQwQ0RDNzYxMkRCRUEzMzAwMTNDRkM1IC8qIE1hcmtlZFNwYWNlLmNwcCAqLywKIAkJ
CQkxNDBDREM3NzEyREJFQTMzMDAxM0NGQzUgLyogTWFya2VkU3BhY2UuaCAqLywKIAkJCQlBNzRC
MzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFya1N0YWNrLmNwcCAqLywKQEAgLTI0MzksNiArMjQ0
NSw3IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRDODI0QUQx
MkY3Qzc4NTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI5MDcs
NiArMjkxNCw3IEBACiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJy
U3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEM4
MjRBQjEyRjdDNzdFMDA4RjM1RTAgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAkocmV2aXNpb24gNzczNjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6dXBkYXRlKCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJp
ZXM7ICsraSkgewogICAgICAgICBpZiAobV9lbnRyaWVzW2ldLmlzVmFsaWRQdHIoKSkgewogICAg
ICAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9lbnRyaWVzW2ldLmdldCgpOwotICAgICAgICAgICAg
aWYgKCFjZWxsIHx8ICFIZWFwOjppc0NlbGxNYXJrZWQoY2VsbCkpCisgICAgICAgICAgICBpZiAo
IWNlbGwgfHwgIUhlYXA6OmlzTWFya2VkKGNlbGwpKQogICAgICAgICAgICAgICAgIG1fZW50cmll
c1tpXS5pbnZhbGlkYXRlKCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGVhcC5oCShyZXZpc2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1ZSk7IC8vIDAgZm9y
IGltbWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNDZWxsKik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgaXNDZWxsTWFya2VkKGNvbnN0IEpTQ2VsbCopOwotICAgICAg
ICBzdGF0aWMgYm9vbCBjaGVja01hcmtDZWxsKGNvbnN0IEpTQ2VsbCopOwotICAgICAgICBzdGF0
aWMgdm9pZCBtYXJrQ2VsbChKU0NlbGwqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWQo
Y29uc3QgSlNDZWxsKik7CisgICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29u
c3QgSlNDZWxsKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChKU0NlbGwqKTsKICAg
ICAgICAgCiAgICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIH5IZWFwKCk7CkBA
IC0xNDIsMTkgKzE0MiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IG1fZXh0
cmFDb3N0OwogICAgIH07CiAKLSAgICBpbmxpbmUgYm9vbCBIZWFwOjppc0NlbGxNYXJrZWQoY29u
c3QgSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IEpT
Q2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBNYXJrZWRTcGFjZTo6aXNDZWxsTWFy
a2VkKGNlbGwpOworICAgICAgICByZXR1cm4gTWFya2VkU3BhY2U6OmlzTWFya2VkKGNlbGwpOwog
ICAgIH0KIAotICAgIGlubGluZSBib29sIEhlYXA6OmNoZWNrTWFya0NlbGwoY29uc3QgSlNDZWxs
KiBjZWxsKQorICAgIGlubGluZSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3QgSlND
ZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZFNwYWNlOjpjaGVja01hcmtD
ZWxsKGNlbGwpOworICAgICAgICByZXR1cm4gTWFya2VkU3BhY2U6OnRlc3RBbmRTZXRNYXJrZWQo
Y2VsbCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSGVhcDo6bWFya0NlbGwoSlNDZWxsKiBj
ZWxsKQorICAgIGlubGluZSB2b2lkIEhlYXA6OnNldE1hcmtlZChKU0NlbGwqIGNlbGwpCiAgICAg
ewotICAgICAgICBNYXJrZWRTcGFjZTo6bWFya0NlbGwoY2VsbCk7CisgICAgICAgIE1hcmtlZFNw
YWNlOjpzZXRNYXJrZWQoY2VsbCk7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wgSGVhcDo6Y29u
dGFpbnModm9pZCogcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHJldmlzaW9uIDc3MzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6Om1hcmtDaGlsZHJlbihKU0NlbGwqIGNlbGwp
CiAgICAgewotICAgICAgICBBU1NFUlQoSGVhcDo6aXNDZWxsTWFya2VkKGNlbGwpKTsKKyAgICAg
ICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKICAgICAgICAgaWYgKCFjZWxsLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNNYXJrQ2hpbGRyZW4oKSkgewogI2lmZGVmIE5E
RUJVRwogICAgICAgICAgICAgYXNPYmplY3QoY2VsbCktPm1hcmtDaGlsZHJlbkRpcmVjdCgqdGhp
cyk7CkBAIC0yNDAsNyArMjQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAg
Y3VycmVudC5tX3ZhbHVlcysrOwogCiAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsOwotICAg
ICAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpIHx8IEhlYXA6OmNoZWNr
TWFya0NlbGwoY2VsbCA9IHZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgICAgIGlmICgh
dmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpIHx8IEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoY2VsbCA9
IHZhbHVlLmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5tX3Zh
bHVlcyA9PSBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3Zl
TGFzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gNzczNjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDcg
KzM1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbik7CiAgICAgICAgIEFTU0VSVChjZWxsKTsKLSAg
ICAgICAgaWYgKEhlYXA6OmNoZWNrTWFya0NlbGwoY2VsbCkpCisgICAgICAgIGlmIChIZWFwOjp0
ZXN0QW5kU2V0TWFya2VkKGNlbGwpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
Y2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID49IENvbXBvdW5kVHlwZSkKICAg
ICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChjZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TWFya2VkQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5oCShyZXZp
c2lvbiA3NzM2MykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3Bh
Y2UuaDo3NzM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpZm5k
ZWYgTWFya2VkU3BhY2VfaAorI2RlZmluZSBNYXJrZWRTcGFjZV9oCisKKyNpbmNsdWRlICJNYWNo
aW5lU3RhY2tNYXJrZXIuaCIKKyNpbmNsdWRlICJQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIKKyNp
bmNsdWRlIDx3dGYvQml0bWFwLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisgICAgY2xhc3Mg
Q29sbGVjdG9yQmxvY2s7CisgICAgY2xhc3MgSGVhcDsKKyAgICBjbGFzcyBKU0NlbGw7CisgICAg
Y2xhc3MgSlNHbG9iYWxEYXRhOworICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBj
bGFzcyBNYXJrU3RhY2s7CisgICAgY2xhc3MgV2Vha0dDSGFuZGxlOworCisjaWYgT1MoV0lOQ0Up
IHx8IE9TKFNZTUJJQU4pIHx8IFBMQVRGT1JNKEJSRVdNUCkKKyAgICBjb25zdCBzaXplX3QgQkxP
Q0tfU0laRSA9IDY0ICogMTAyNDsgLy8gNjRrCisjZWxzZQorICAgIGNvbnN0IHNpemVfdCBCTE9D
S19TSVpFID0gMjU2ICogMTAyNDsgLy8gMjU2aworI2VuZGlmCisKKyAgICBzdHJ1Y3QgQ29sbGVj
dG9ySGVhcCB7CisgICAgICAgIHNpemVfdCBuZXh0QmxvY2s7CisgICAgICAgIHNpemVfdCBuZXh0
Q2VsbDsKKyAgICAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkKiBibG9ja3M7CisgICAgICAgIAor
ICAgICAgICBzaXplX3QgbnVtQmxvY2tzOworICAgICAgICBzaXplX3QgdXNlZEJsb2NrczsKKwor
ICAgICAgICBDb2xsZWN0b3JCbG9jayogY29sbGVjdG9yQmxvY2soc2l6ZV90IGluZGV4KSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVjdG9yQmxv
Y2sqPihibG9ja3NbaW5kZXhdLmJhc2UoKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgY2xh
c3MgTWFya2VkU3BhY2UgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFj
ZSk7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKKwor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKik7CisgICAgICAg
IHN0YXRpYyBib29sIGNoZWNrTWFya0NlbGwoY29uc3QgSlNDZWxsKik7CisgICAgICAgIHN0YXRp
YyB2b2lkIG1hcmtDZWxsKEpTQ2VsbCopOworCisgICAgICAgIE1hcmtlZFNwYWNlKEpTR2xvYmFs
RGF0YSopOworICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KKworICAgICAgICB2b2lkKiBh
bGxvY2F0ZShzaXplX3QpOworCisgICAgICAgIHZvaWQgY2xlYXJNYXJrQml0cygpOworICAgICAg
ICB2b2lkIG1hcmtSb290cygpOworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIHZvaWQg
c3dlZXAoKTsKKworICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgICAgICBzaXplX3Qg
Y2FwYWNpdHkoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCkgY29uc3Q7CisK
KyAgICAgICAgYm9vbCBjb250YWlucyh2b2lkKik7CisKKyAgICAgICAgTGl2ZU9iamVjdEl0ZXJh
dG9yIHByaW1hcnlIZWFwQmVnaW4oKTsKKyAgICAgICAgTGl2ZU9iamVjdEl0ZXJhdG9yIHByaW1h
cnlIZWFwRW5kKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIGlzQ2VsbEFsaWduZWQo
dm9pZCopOworICAgICAgICBib29sIGlzUG9zc2libGVDZWxsKHZvaWQqKTsKKyAgICAgICAgYm9v
bCBjb250YWluc1Nsb3dDYXNlKHZvaWQqKTsKKworICAgICAgICBzdGF0aWMgQ29sbGVjdG9yQmxv
Y2sqIGNlbGxCbG9jayhjb25zdCBKU0NlbGwqKTsKKyAgICAgICAgc3RhdGljIHNpemVfdCBjZWxs
T2Zmc2V0KGNvbnN0IEpTQ2VsbCopOworCisgICAgICAgIE5FVkVSX0lOTElORSBDb2xsZWN0b3JC
bG9jayogYWxsb2NhdGVCbG9jaygpOworICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBmcmVlQmxv
Y2soc2l6ZV90KTsKKyAgICAgICAgdm9pZCByZXNpemVCbG9ja3MoKTsKKyAgICAgICAgdm9pZCBn
cm93QmxvY2tzKHNpemVfdCBuZWVkZWRCbG9ja3MpOworICAgICAgICB2b2lkIHNocmlua0Jsb2Nr
cyhzaXplX3QgbmVlZGVkQmxvY2tzKTsKKworICAgICAgICB2b2lkIGNsZWFyTWFya0JpdHMoQ29s
bGVjdG9yQmxvY2sqKTsKKyAgICAgICAgc2l6ZV90IG1hcmtlZENlbGxzKHNpemVfdCBzdGFydEJs
b2NrID0gMCwgc2l6ZV90IHN0YXJ0Q2VsbCA9IDApIGNvbnN0OworCisgICAgICAgIENvbGxlY3Rv
ckhlYXAgbV9oZWFwOworICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICB9
OworCisgICAgLy8gdHVuYWJsZSBwYXJhbWV0ZXJzCisgICAgLy8gZGVyaXZlZCBjb25zdGFudHMK
KyAgICBjb25zdCBzaXplX3QgQkxPQ0tfT0ZGU0VUX01BU0sgPSBCTE9DS19TSVpFIC0gMTsKKyAg
ICBjb25zdCBzaXplX3QgQkxPQ0tfTUFTSyA9IH5CTE9DS19PRkZTRVRfTUFTSzsKKyAgICBjb25z
dCBzaXplX3QgTUlOSU1VTV9DRUxMX1NJWkUgPSA2NDsKKyAgICBjb25zdCBzaXplX3QgQ0VMTF9B
UlJBWV9MRU5HVEggPSAoTUlOSU1VTV9DRUxMX1NJWkUgLyBzaXplb2YoZG91YmxlKSkgKyAoTUlO
SU1VTV9DRUxMX1NJWkUgJSBzaXplb2YoZG91YmxlKSAhPSAwID8gc2l6ZW9mKGRvdWJsZSkgOiAw
KTsKKyAgICBjb25zdCBzaXplX3QgQ0VMTF9TSVpFID0gQ0VMTF9BUlJBWV9MRU5HVEggKiBzaXpl
b2YoZG91YmxlKTsKKyAgICBjb25zdCBzaXplX3QgU01BTExfQ0VMTF9TSVpFID0gQ0VMTF9TSVpF
IC8gMjsKKyAgICBjb25zdCBzaXplX3QgQ0VMTF9NQVNLID0gQ0VMTF9TSVpFIC0gMTsKKyAgICBj
b25zdCBzaXplX3QgQ0VMTF9BTElHTl9NQVNLID0gfkNFTExfTUFTSzsKKyAgICBjb25zdCBzaXpl
X3QgQ0VMTFNfUEVSX0JMT0NLID0gKEJMT0NLX1NJWkUgLSBzaXplb2YoTWFya2VkU3BhY2UqKSkg
KiA4ICogQ0VMTF9TSVpFIC8gKDggKiBDRUxMX1NJWkUgKyAxKSAvIENFTExfU0laRTsgLy8gb25l
IGJpdG1hcCBieXRlIGNhbiByZXByZXNlbnQgOCBjZWxscy4KKyAgICAKKyAgICBzdHJ1Y3QgQ29s
bGVjdG9yQ2VsbCB7CisgICAgICAgIEZpeGVkQXJyYXk8ZG91YmxlLCBDRUxMX0FSUkFZX0xFTkdU
SD4gbWVtb3J5OworICAgIH07CisKKyAgICBjbGFzcyBDb2xsZWN0b3JCbG9jayB7CisgICAgcHVi
bGljOgorICAgICAgICBGaXhlZEFycmF5PENvbGxlY3RvckNlbGwsIENFTExTX1BFUl9CTE9DSz4g
Y2VsbHM7CisgICAgICAgIFdURjo6Qml0bWFwPENFTExTX1BFUl9CTE9DSz4gbWFya2VkOworICAg
ICAgICBIZWFwKiBoZWFwOworICAgIH07CisKKyAgICBzdHJ1Y3QgSGVhcENvbnN0YW50cyB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbFNpemUgPSBDRUxMX1NJWkU7CisgICAgICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbHNQZXJCbG9jayA9IENFTExTX1BFUl9CTE9DSzsKKyAg
ICAgICAgdHlwZWRlZiBDb2xsZWN0b3JDZWxsIENlbGw7CisgICAgICAgIHR5cGVkZWYgQ29sbGVj
dG9yQmxvY2sgQmxvY2s7CisgICAgfTsKKworICAgIGlubGluZSBDb2xsZWN0b3JCbG9jayogTWFy
a2VkU3BhY2U6OmNlbGxCbG9jayhjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0b3JCbG9jayo+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihjZWxsKSAmIEJMT0NLX01BU0spOworICAgIH0KKworICAgIGlubGluZSBzaXpl
X3QgTWFya2VkU3BhY2U6OmNlbGxPZmZzZXQoY29uc3QgSlNDZWxsKiBjZWxsKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgJiBCTE9DS19P
RkZTRVRfTUFTSykgLyBDRUxMX1NJWkU7CisgICAgfQorCisgICAgaW5saW5lIEhlYXAqIE1hcmtl
ZFNwYWNlOjpoZWFwKEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHJldHVybiBjZWxsQmxv
Y2soY2VsbCktPmhlYXA7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgTWFya2VkU3BhY2U6Omlz
Q2VsbE1hcmtlZChjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICByZXR1cm4gY2Vs
bEJsb2NrKGNlbGwpLT5tYXJrZWQuZ2V0KGNlbGxPZmZzZXQoY2VsbCkpOworICAgIH0KKworICAg
IGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpjaGVja01hcmtDZWxsKGNvbnN0IEpTQ2VsbCogY2Vs
bCkKKyAgICB7CisgICAgICAgIHJldHVybiBjZWxsQmxvY2soY2VsbCktPm1hcmtlZC50ZXN0QW5k
U2V0KGNlbGxPZmZzZXQoY2VsbCkpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIE1hcmtlZFNw
YWNlOjptYXJrQ2VsbChKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBjZWxsQmxvY2soY2Vs
bCktPm1hcmtlZC5zZXQoY2VsbE9mZnNldChjZWxsKSk7CisgICAgfQorCisgICAgLy8gQ2VsbCBz
aXplIG5lZWRzIHRvIGJlIGEgcG93ZXIgb2YgdHdvIGZvciBpc1Bvc3NpYmxlQ2VsbCB0byBiZSB2
YWxpZC4KKyAgICBDT01QSUxFX0FTU0VSVCghKHNpemVvZihDb2xsZWN0b3JDZWxsKSAlIDIpLCBD
b2xsZWN0b3JfY2VsbF9zaXplX2lzX3Bvd2VyX29mX3R3byk7CisKKyAgICBpbmxpbmUgYm9vbCBN
YXJrZWRTcGFjZTo6aXNDZWxsQWxpZ25lZCh2b2lkICpwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKGludHB0cl90KShwKSAmIENFTExfTUFTSyk7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wg
TWFya2VkU3BhY2U6OmlzUG9zc2libGVDZWxsKHZvaWQqIHApCisgICAgeworICAgICAgICByZXR1
cm4gaXNDZWxsQWxpZ25lZChwKSAmJiBwOworICAgIH0KKworICAgIGlubGluZSBib29sIE1hcmtl
ZFNwYWNlOjpjb250YWlucyh2b2lkKiB4KQorICAgIHsKKyAgICAgICAgaWYgKCFpc1Bvc3NpYmxl
Q2VsbCh4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAg
ICByZXR1cm4gY29udGFpbnNTbG93Q2FzZSh4KTsKKyAgICB9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gTWFya2VkU3BhY2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDI2
ICsxOSwxNiBAQAogICoKICAqLwogCi0jaWZuZGVmIE1hcmtlZFNwYWNlX2gKLSNkZWZpbmUgTWFy
a2VkU3BhY2VfaAorI2lmbmRlZiBNYXJrZWRCbG9ja19oCisjZGVmaW5lIE1hcmtlZEJsb2NrX2gK
IAotI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgotI2luY2x1ZGUgIlBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oIgogI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvRml4
ZWRBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBDb2xsZWN0b3JCbG9jazsKICAgICBjbGFzcyBIZWFwOwogICAgIGNs
YXNzIEpTQ2VsbDsKLSAgICBjbGFzcyBKU0dsb2JhbERhdGE7Ci0gICAgY2xhc3MgTGl2ZU9iamVj
dEl0ZXJhdG9yOwotICAgIGNsYXNzIE1hcmtTdGFjazsKLSAgICBjbGFzcyBXZWFrR0NIYW5kbGU7
CiAKICNpZiBPUyhXSU5DRSkgfHwgT1MoU1lNQklBTikgfHwgUExBVEZPUk0oQlJFV01QKQogICAg
IGNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gNjQgKiAxMDI0OyAvLyA2NGsKQEAgLTQ2LDczICsz
Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gMjU2
ICogMTAyNDsgLy8gMjU2awogI2VuZGlmCiAKLSAgICBzdHJ1Y3QgQ29sbGVjdG9ySGVhcCB7Ci0g
ICAgICAgIHNpemVfdCBuZXh0QmxvY2s7Ci0gICAgICAgIHNpemVfdCBuZXh0Q2VsbDsKLSAgICAg
ICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkKiBibG9ja3M7Ci0gICAgICAgIAotICAgICAgICBzaXpl
X3QgbnVtQmxvY2tzOwotICAgICAgICBzaXplX3QgdXNlZEJsb2NrczsKLQotICAgICAgICBDb2xs
ZWN0b3JCbG9jayogY29sbGVjdG9yQmxvY2soc2l6ZV90IGluZGV4KSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVjdG9yQmxvY2sqPihibG9ja3Nb
aW5kZXhdLmJhc2UoKSk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgY2xhc3MgTWFya2VkU3Bh
Y2UgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKLQotICAgICAgICBzdGF0
aWMgYm9vbCBpc0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGNoZWNrTWFya0NlbGwoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIG1hcmtD
ZWxsKEpTQ2VsbCopOwotCi0gICAgICAgIE1hcmtlZFNwYWNlKEpTR2xvYmFsRGF0YSopOwotICAg
ICAgICB2b2lkIGRlc3Ryb3koKTsKLQotICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEo
KSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KLQotICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXpl
X3QpOwotCi0gICAgICAgIHZvaWQgY2xlYXJNYXJrQml0cygpOwotICAgICAgICB2b2lkIG1hcmtS
b290cygpOwotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgICAgIHZvaWQgc3dlZXAoKTsKLQot
ICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgICAgICBzaXplX3QgY2FwYWNpdHkoKSBj
b25zdDsKLSAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCkgY29uc3Q7Ci0KLSAgICAgICAgYm9v
bCBjb250YWlucyh2b2lkKik7Ci0KLSAgICAgICAgTGl2ZU9iamVjdEl0ZXJhdG9yIHByaW1hcnlI
ZWFwQmVnaW4oKTsKLSAgICAgICAgTGl2ZU9iamVjdEl0ZXJhdG9yIHByaW1hcnlIZWFwRW5kKCk7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIGlzQ2VsbEFsaWduZWQodm9pZCopOwotICAg
ICAgICBib29sIGlzUG9zc2libGVDZWxsKHZvaWQqKTsKLSAgICAgICAgYm9vbCBjb250YWluc1Ns
b3dDYXNlKHZvaWQqKTsKLQotICAgICAgICBzdGF0aWMgQ29sbGVjdG9yQmxvY2sqIGNlbGxCbG9j
ayhjb25zdCBKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIHNpemVfdCBjZWxsT2Zmc2V0KGNvbnN0
IEpTQ2VsbCopOwotCi0gICAgICAgIE5FVkVSX0lOTElORSBDb2xsZWN0b3JCbG9jayogYWxsb2Nh
dGVCbG9jaygpOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBmcmVlQmxvY2soc2l6ZV90KTsK
LSAgICAgICAgdm9pZCByZXNpemVCbG9ja3MoKTsKLSAgICAgICAgdm9pZCBncm93QmxvY2tzKHNp
emVfdCBuZWVkZWRCbG9ja3MpOwotICAgICAgICB2b2lkIHNocmlua0Jsb2NrcyhzaXplX3QgbmVl
ZGVkQmxvY2tzKTsKLQotICAgICAgICB2b2lkIGNsZWFyTWFya0JpdHMoQ29sbGVjdG9yQmxvY2sq
KTsKLSAgICAgICAgc2l6ZV90IG1hcmtlZENlbGxzKHNpemVfdCBzdGFydEJsb2NrID0gMCwgc2l6
ZV90IHN0YXJ0Q2VsbCA9IDApIGNvbnN0OwotCi0gICAgICAgIENvbGxlY3RvckhlYXAgbV9oZWFw
OwotICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKLSAgICB9OwotCi0gICAgLy8g
dHVuYWJsZSBwYXJhbWV0ZXJzCi0gICAgLy8gZGVyaXZlZCBjb25zdGFudHMKICAgICBjb25zdCBz
aXplX3QgQkxPQ0tfT0ZGU0VUX01BU0sgPSBCTE9DS19TSVpFIC0gMTsKICAgICBjb25zdCBzaXpl
X3QgQkxPQ0tfTUFTSyA9IH5CTE9DS19PRkZTRVRfTUFTSzsKICAgICBjb25zdCBzaXplX3QgTUlO
SU1VTV9DRUxMX1NJWkUgPSA2NDsKQEAgLTEyMSwxNCArNDQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY29uc3Qgc2l6ZV90IFNNQUxMX0NFTExfU0laRSA9IENFTExfU0laRSAvIDI7CiAgICAg
Y29uc3Qgc2l6ZV90IENFTExfTUFTSyA9IENFTExfU0laRSAtIDE7CiAgICAgY29uc3Qgc2l6ZV90
IENFTExfQUxJR05fTUFTSyA9IH5DRUxMX01BU0s7Ci0gICAgY29uc3Qgc2l6ZV90IENFTExTX1BF
Ul9CTE9DSyA9IChCTE9DS19TSVpFIC0gc2l6ZW9mKE1hcmtlZFNwYWNlKikpICogOCAqIENFTExf
U0laRSAvICg4ICogQ0VMTF9TSVpFICsgMSkgLyBDRUxMX1NJWkU7IC8vIG9uZSBiaXRtYXAgYnl0
ZSBjYW4gcmVwcmVzZW50IDggY2VsbHMuCisgICAgY29uc3Qgc2l6ZV90IENFTExTX1BFUl9CTE9D
SyA9IChCTE9DS19TSVpFIC0gc2l6ZW9mKEhlYXAqKSkgKiA4ICogQ0VMTF9TSVpFIC8gKDggKiBD
RUxMX1NJWkUgKyAxKSAvIENFTExfU0laRTsgLy8gb25lIGJpdG1hcCBieXRlIGNhbiByZXByZXNl
bnQgOCBjZWxscy4KICAgICAKICAgICBzdHJ1Y3QgQ29sbGVjdG9yQ2VsbCB7CiAgICAgICAgIEZp
eGVkQXJyYXk8ZG91YmxlLCBDRUxMX0FSUkFZX0xFTkdUSD4gbWVtb3J5OwogICAgIH07CiAKLSAg
ICBjbGFzcyBDb2xsZWN0b3JCbG9jayB7CisgICAgLy8gQ2VsbCBzaXplIG5lZWRzIHRvIGJlIGEg
cG93ZXIgb2YgdHdvIGZvciBDRUxMX01BU0sgdG8gYmUgdmFsaWQuCisgICAgQ09NUElMRV9BU1NF
UlQoIShzaXplb2YoQ29sbGVjdG9yQ2VsbCkgJSAyKSwgQ29sbGVjdG9yX2NlbGxfc2l6ZV9pc19w
b3dlcl9vZl90d28pOworCisgICAgY2xhc3MgTWFya2VkQmxvY2sgewogICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIGJvb2wgaXNDZWxsQWxpZ25lZCh2b2lkICpwKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNQb3NzaWJsZUNlbGwodm9pZCogcCk7CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9j
ayogYmxvY2tGb3Iodm9pZCogcCk7CisKKyAgICAgICAgc2l6ZV90IGNlbGxOdW1iZXIoY29uc3Qg
SlNDZWxsKiBjZWxsKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZChjb25zdCBKU0NlbGwqIGNlbGwp
OworICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3QgSlNDZWxsKiBjZWxsKTsKKyAg
ICAgICAgdm9pZCBzZXRNYXJrZWQoSlNDZWxsKiBjZWxsKTsKKwogICAgICAgICBGaXhlZEFycmF5
PENvbGxlY3RvckNlbGwsIENFTExTX1BFUl9CTE9DSz4gY2VsbHM7CiAgICAgICAgIFdURjo6Qml0
bWFwPENFTExTX1BFUl9CTE9DSz4gbWFya2VkOwogICAgICAgICBIZWFwKiBoZWFwOwpAQCAtMTM4
LDYwICs3Myw0NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBjZWxsU2l6ZSA9IENFTExfU0laRTsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjZWxs
c1BlckJsb2NrID0gQ0VMTFNfUEVSX0JMT0NLOwogICAgICAgICB0eXBlZGVmIENvbGxlY3RvckNl
bGwgQ2VsbDsKLSAgICAgICAgdHlwZWRlZiBDb2xsZWN0b3JCbG9jayBCbG9jazsKKyAgICAgICAg
dHlwZWRlZiBNYXJrZWRCbG9jayBCbG9jazsKICAgICB9OwogCi0gICAgaW5saW5lIENvbGxlY3Rv
ckJsb2NrKiBNYXJrZWRTcGFjZTo6Y2VsbEJsb2NrKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBp
bmxpbmUgTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpibG9ja0Zvcih2b2lkKiBjZWxsKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29sbGVjdG9yQmxvY2sqPihyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgJiBCTE9DS19NQVNLKTsKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TWFya2VkQmxvY2sqPihyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oY2VsbCkgJiBCTE9DS19NQVNLKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IE1h
cmtlZFNwYWNlOjpjZWxsT2Zmc2V0KGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgc2l6
ZV90IE1hcmtlZEJsb2NrOjpjZWxsTnVtYmVyKGNvbnN0IEpTQ2VsbCogY2VsbCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNlbGwpICYgQkxPQ0tf
T0ZGU0VUX01BU0spIC8gQ0VMTF9TSVpFOwogICAgIH0KIAotICAgIGlubGluZSBIZWFwKiBNYXJr
ZWRTcGFjZTo6aGVhcChKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICByZXR1cm4gY2VsbEJs
b2NrKGNlbGwpLT5oZWFwOwotICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpp
c0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZChjb25zdCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICByZXR1cm4g
Y2VsbEJsb2NrKGNlbGwpLT5tYXJrZWQuZ2V0KGNlbGxPZmZzZXQoY2VsbCkpOworICAgICAgICBy
ZXR1cm4gbWFya2VkLmdldChjZWxsTnVtYmVyKGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRTcGFjZTo6Y2hlY2tNYXJrQ2VsbChjb25zdCBKU0NlbGwqIGNlbGwpCisgICAg
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3QgSlNDZWxsKiBj
ZWxsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNlbGxCbG9jayhjZWxsKS0+bWFya2VkLnRlc3RB
bmRTZXQoY2VsbE9mZnNldChjZWxsKSk7CisgICAgICAgIHJldHVybiBtYXJrZWQudGVzdEFuZFNl
dChjZWxsTnVtYmVyKGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6bWFya0NlbGwoSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpz
ZXRNYXJrZWQoSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgY2VsbEJsb2NrKGNlbGwpLT5t
YXJrZWQuc2V0KGNlbGxPZmZzZXQoY2VsbCkpOworICAgICAgICBtYXJrZWQuc2V0KGNlbGxOdW1i
ZXIoY2VsbCkpOwogICAgIH0KIAotICAgIC8vIENlbGwgc2l6ZSBuZWVkcyB0byBiZSBhIHBvd2Vy
IG9mIHR3byBmb3IgaXNQb3NzaWJsZUNlbGwgdG8gYmUgdmFsaWQuCi0gICAgQ09NUElMRV9BU1NF
UlQoIShzaXplb2YoQ29sbGVjdG9yQ2VsbCkgJSAyKSwgQ29sbGVjdG9yX2NlbGxfc2l6ZV9pc19w
b3dlcl9vZl90d28pOwotCi0gICAgaW5saW5lIGJvb2wgTWFya2VkU3BhY2U6OmlzQ2VsbEFsaWdu
ZWQodm9pZCAqcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNDZWxsQWxpZ25lZCh2
b2lkICpwKQogICAgIHsKICAgICAgICAgcmV0dXJuICEoKGludHB0cl90KShwKSAmIENFTExfTUFT
Syk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkU3BhY2U6OmlzUG9zc2libGVDZWxs
KHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzUG9zc2libGVDZWxsKHZv
aWQqIHApCiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxsQWxpZ25lZChwKSAmJiBwOwogICAg
IH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpjb250YWlucyh2b2lkKiB4KQotICAg
IHsKLSAgICAgICAgaWYgKCFpc1Bvc3NpYmxlQ2VsbCh4KSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICByZXR1cm4gY29udGFpbnNTbG93Q2FzZSh4KTsK
LSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gTWFya2VkU3BhY2VfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCShyZXZp
c2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDkgKzY1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKIAotICAgICAgICBz
dGF0aWMgYm9vbCBpc0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGNoZWNrTWFya0NlbGwoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIG1h
cmtDZWxsKEpTQ2VsbCopOworICAgICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZChjb25zdCBKU0Nl
bGwqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCBKU0NlbGwq
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0TWFya2VkKEpTQ2VsbCopOwogCiAgICAgICAgIE1h
cmtlZFNwYWNlKEpTR2xvYmFsRGF0YSopOwogICAgICAgICB2b2lkIGRlc3Ryb3koKTsKQEAgLTE1
NiwxNyArMTU2LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gY2VsbEJsb2Nr
KGNlbGwpLT5oZWFwOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNlOjppc0Nl
bGxNYXJrZWQoY29uc3QgSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNl
Ojppc01hcmtlZChjb25zdCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gY2Vs
bEJsb2NrKGNlbGwpLT5tYXJrZWQuZ2V0KGNlbGxPZmZzZXQoY2VsbCkpOwogICAgIH0KIAotICAg
IGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpjaGVja01hcmtDZWxsKGNvbnN0IEpTQ2VsbCogY2Vs
bCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRTcGFjZTo6dGVzdEFuZFNldE1hcmtlZChjb25zdCBK
U0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gY2VsbEJsb2NrKGNlbGwpLT5tYXJr
ZWQudGVzdEFuZFNldChjZWxsT2Zmc2V0KGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9p
ZCBNYXJrZWRTcGFjZTo6bWFya0NlbGwoSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSB2b2lkIE1h
cmtlZFNwYWNlOjpzZXRNYXJrZWQoSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgY2VsbEJs
b2NrKGNlbGwpLT5tYXJrZWQuc2V0KGNlbGxPZmZzZXQoY2VsbCkpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAkocmV2aXNp
b24gNzczNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBudW1DaGFyYWN0ZXJzVG9TdG8KIAogc3RhdGljIGlubGluZSBib29sIGlzTWFya2VkKEpTQ2Vs
bCogc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcgJiYgSGVhcDo6aXNDZWxsTWFya2VkKHN0
cmluZyk7CisgICAgcmV0dXJuIHN0cmluZyAmJiBIZWFwOjppc01hcmtlZChzdHJpbmcpOwogfQog
CiBjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiA3NzM2MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw4
IEBAIHB1YmxpYzoKICAgICBjb25zdF9pdGVyYXRvciB1bmNoZWNrZWRCZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciB1bmNoZWNrZWRFbmQo
KSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKGl0ZXJh
dG9yIGl0KSBjb25zdCB7IHJldHVybiBIZWFwOjppc0NlbGxNYXJrZWQoaXQtPnNlY29uZC5nZXQo
KSk7IH0KLSAgICBib29sIGlzVmFsaWQoY29uc3RfaXRlcmF0b3IgaXQpIGNvbnN0IHsgcmV0dXJu
IEhlYXA6OmlzQ2VsbE1hcmtlZChpdC0+c2Vjb25kLmdldCgpKTsgfQorICAgIGJvb2wgaXNWYWxp
ZChpdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVhcDo6aXNNYXJrZWQoaXQtPnNlY29uZC5n
ZXQoKSk7IH0KKyAgICBib29sIGlzVmFsaWQoY29uc3RfaXRlcmF0b3IgaXQpIGNvbnN0IHsgcmV0
dXJuIEhlYXA6OmlzTWFya2VkKGl0LT5zZWNvbmQuZ2V0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxLZXlUeXBlLCBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+ID4gbV9tYXA7CkBAIC05
MSw3ICs5MSw3IEBAIGlubGluZSBNYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWEKICAg
ICBNYXBwZWRUeXBlKiByZXN1bHQgPSBtX21hcC5nZXQoa2V5KS5nZXQoKTsKICAgICBpZiAocmVz
dWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgaWYgKCFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0KSkKKyAgICBp
ZiAoIUhlYXA6OmlzTWFya2VkKHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1h
cHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDIs
NyArMTAyLDcgQEAgTWFwcGVkVHlwZSogV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cAogICAg
IE1hcHBlZFR5cGUqIHJlc3VsdCA9IG1fbWFwLnRha2Uoa2V5KS5nZXQoKTsKICAgICBpZiAocmVz
dWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgaWYgKCFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0KSkKKyAgICBp
ZiAoIUhlYXA6OmlzTWFya2VkKHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1h
cHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTAs
MTAgKzExMCwxMCBAQCBNYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPgogcGFpcjx0eXBl
bmFtZSBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46Oml0ZXJhdG9yLCBib29sPiBXZWFr
R0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBl
ZFR5cGUqIHZhbHVlKQogewotICAgIEhlYXA6Om1hcmtDZWxsKHZhbHVlKTsgLy8gSWYgdmFsdWUg
aXMgbmV3bHkgYWxsb2NhdGVkLCBpdCdzIG5vdCBtYXJrZWQsIHNvIG1hcmsgaXQgbm93LgorICAg
IEhlYXA6OnNldE1hcmtlZCh2YWx1ZSk7IC8vIElmIHZhbHVlIGlzIG5ld2x5IGFsbG9jYXRlZCwg
aXQncyBub3QgbWFya2VkLCBzbyBtYXJrIGl0IG5vdy4KICAgICBwYWlyPGl0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25k
KSB7IC8vIHByZS1leGlzdGluZyBlbnRyeQotICAgICAgICByZXN1bHQuc2Vjb25kID0gIUhlYXA6
OmlzQ2VsbE1hcmtlZChyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSk7CisgICAgICAgIHJlc3Vs
dC5zZWNvbmQgPSAhSGVhcDo6aXNNYXJrZWQocmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCkpOwog
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOwogICAgIH0KICAgICByZXR1cm4g
cmVzdWx0Owo=
</data>
<flag name="review"
          id="72405"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>