<?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>40760</bug_id>
          
          <creation_ts>2010-06-16 22:43:44 -0700</creation_ts>
          <short_desc>Use adoptRef and create functions in more code paths</short_desc>
          <delta_ts>2010-06-28 13:33:11 -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>WebCore Misc.</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>
          
          <blocked>27672</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239234</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 22:43:44 -0700</bug_when>
    <thetext>Use adoptRef and create functions in more code paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239239</commentid>
    <comment_count>1</comment_count>
      <attachid>58964</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 23:02:42 -0700</bug_when>
    <thetext>Created attachment 58964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239392</commentid>
    <comment_count>2</comment_count>
      <attachid>58964</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-17 07:59:14 -0700</bug_when>
    <thetext>Comment on attachment 58964
Patch

Clearing flags on attachment: 58964

Committed r61324: &lt;http://trac.webkit.org/changeset/61324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239393</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-17 07:59:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239406</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-06-17 08:39:44 -0700</bug_when>
    <thetext>This patch broke all Chromium build, could you guys fix them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243868</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-28 13:33:11 -0700</bug_when>
    <thetext>Simon fixed Qt in &lt;http://trac.webkit.org/changeset/61327&gt;. I fixed Chromium in &lt;http://trac.webkit.org/changeset/61328&gt; and &lt;http://trac.webkit.org/changeset/61329&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58964</attachid>
            <date>2010-06-16 23:02:42 -0700</date>
            <delta_ts>2010-06-17 07:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40760-20100616230241.patch</filename>
            <type>text/plain</type>
            <size>43233</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMzA3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMTYgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBhZG9wdFJlZiBhbmQgY3JlYXRlIGZ1bmN0aW9ucyBpbiBtb3Jl
IGNvZGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwNzYwCisKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5oOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgUmVmQ291bnRlZC5oLgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9uQ29kZUJsb2NrKTogVXNl
IHRoZQorICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZTo6Y3JlYXRlIGZ1bmN0aW9uIGluc3RlYWQg
b2YgY2FsbGluZyBuZXcgZGlyZWN0bHkuCisKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxl
Lmg6IEFkZGVkIGEgY3JlYXRlIGZ1bmN0aW9uIHRvIHRoZSBTaGFyZWRTeW1ib2xUYWJsZQorICAg
ICAgICBjbGFzcyBhbmQgbWFkZSB0aGUgY29uc3RydWN0b3IgcHJpdmF0ZS4KKwogMjAxMC0wNi0x
NiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgTGV2aW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmgJKHJldmlzaW9uIDYxMTg2
KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvV2Vha0dDUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBzdHJ1Y3QgU3RhdGljVmFsdWVFbnRyeSA6IEZhc3RBbGxvY0Jh
c2UgewogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIF9n
ZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQcm9wZXJ0eSwgSlNQ
cm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCShyZXZpc2lvbiA2MTE4NikKKysr
IEphdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRl
ICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gNjExODYpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjU1LDcgKzY1NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBzeW1ib2wgdGFibGUsIHNvIHdlIGp1c3QgcGFzcyBhcyBhIHJhdyBw
b2ludGVyIHdpdGggYSByZWYgY291bnQgb2YgMS4gIFdlIHRoZW4gbWFudWFsbHkgZGVyZWYKICAg
ICAgICAgLy8gaW4gdGhlIGRlc3RydWN0b3IuCiAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKEZ1
bmN0aW9uRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBDb2RlVHlwZSBjb2RlVHlwZSwgUGFz
c1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9m
ZnNldCwgYm9vbCBpc0NvbnN0cnVjdG9yKQotICAgICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJF
eGVjdXRhYmxlLCBjb2RlVHlwZSwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgbmV3IFNo
YXJlZFN5bWJvbFRhYmxlLCBpc0NvbnN0cnVjdG9yKQorICAgICAgICAgICAgOiBDb2RlQmxvY2so
b3duZXJFeGVjdXRhYmxlLCBjb2RlVHlwZSwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwg
U2hhcmVkU3ltYm9sVGFibGU6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKSwgaXNDb25zdHJ1Y3RvcikK
ICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIH5GdW5jdGlvbkNvZGVCbG9jaygpCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiA2MTE4NikKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIx
LDggKzEyMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VVN0cmluZzo6UmVwPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVTdHJpbmc6OlJlcD4gPiwgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFp
dHM+IFN5bWJvbFRhYmxlOwogCi0gICAgY2xhc3MgU2hhcmVkU3ltYm9sVGFibGUgOiBwdWJsaWMg
U3ltYm9sVGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFN5bWJvbFRhYmxlPgotICAgIHsK
KyAgICBjbGFzcyBTaGFyZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBTeW1ib2xUYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8U2hhcmVkU3ltYm9sVGFibGU+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFN5bWJvbFRhYmxlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkU3ltYm9sVGFibGUpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hh
cmVkU3ltYm9sVGFibGUoKSB7IH0KICAgICB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gNjEzMDcpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDc5IEBACisyMDEwLTA2LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYWRv
cHRSZWYgYW5kIGNyZWF0ZSBmdW5jdGlvbnMgaW4gbW9yZSBjb2RlIHBhdGhzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDc2MAorCisgICAgICAgIFRo
aXMgaGVscHMgcHJlcGFyZSBmb3IgYW4gYXNzZXJ0aW9uIHRoYXQgZmlyZXMgaWYgeW91IHJlZiBv
ciBkZXN0cm95IGFuCisgICAgICAgIG9iamVjdCBiZWZvcmUgY2FsbGluZyBhZG9wdFJlZiBvbiBp
dC4gVGhhdCB3aWxsIGhlbHAgdXMgY2F0Y2ggbWlzdGFrZXMKKyAgICAgICAgdGhhdCBjYW4gbGVh
ZCB0byBzdG9yYWdlIGxlYWtzLgorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDogVXBkYXRl
ZCBleHBvcnQgbm93IHRoYXQgRnJhbWU6OmNyZWF0ZSBpcyBub3QgYW4KKyAgICAgICAgaW5saW5l
IGZ1bmN0aW9uLgorCisgICAgICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVFeHBsaWNpdCk6IFVzZSBjcmVhdGUuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUltcGxpY2l0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZSk6IEFkZGVkLgorCisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVVbmNhY2hlZElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVVbmNhY2hlZENvbG9yKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlVW5jYWNoZWQp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKTogVXNlIGNyZWF0ZVVuY2FjaGVkSWRlbnRpZmllcgorICAgICAgICBpbnN0ZWFkIG9m
IHVzaW5nIG5ldyBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVDb2xvcik6IFVzZSBjcmVhdGVVbmNhY2hlZENvbG9yIGluc3RlYWQKKyAgICAgICAg
b2YgdXNpbmcgbmV3IGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSk6IFVzZSBjcmVhdGVkVW5jYWNoZWQgaW5zdGVhZCBvZiB1c2luZworICAgICAg
ICBuZXcgZGlyZWN0bHkuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6IERlY2xh
cmUgdGhlIG5ldyBmdW5jdGlvbnMgYWJvdmUuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IERlcmVm
IHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0IGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXRseSBk
ZWxldGluZyBpdC4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIpOiBN
b3ZlIHRoZSBjYWxsIHRvCisgICAgICAgIGFkZFN1YnJlc291cmNlTG9hZGVyIG91dCBvZiBoZXJl
LgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6IE1vdmUgaXQg
aW4gaGVyZS4gVGhpcyBtYWtlcyBpdCBzbworICAgICAgICB3ZSBkb24ndCByZWYgdGhlIGxvYWRl
ciBiZWZvcmUgZmluaXNoaW5nIGl0cyBjcmVhdGlvbiBhbmQgY2FsbGluZyBhZG9wdFJlZi4KKwor
ICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1l
KTogTW92ZSB0aGUgY2FsbCB0byBzZXRNYWluRnJhbWUgb3V0IG9mIGhlcmUuCisgICAgICAgIEFs
c28gcmVmYWN0b3IgdGhlIGNvZGUgc28gYW4gYXNzZXJ0aW9uIGlzIGVhc2llciB0byByZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZSk6IE1vdmUgdGhlIGNhbGwgdG8gc2V0TWFp
bkZyYW1lIGluIGhlcmUuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgc28gd2UgZG9uJ3QgcmVmIHRo
ZSBmcmFtZSBiZWZvcmUgZmluaXNoaW5nIGl0cyBjcmVhdGlvbgorICAgICAgICBhbmQgY2FsbGlu
ZyBhZG9wdFJlZi4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IE1hZGUgdGhlIGNyZWF0ZSBmdW5j
dGlvbiBub24taW5saW5lLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0OjpjcmVhdGUpOiBDYWxsIGNyZWF0ZVVu
Y2FjaGVkIGluc3RlYWQgb2YgY2FsbGxpbmcKKyAgICAgICAgbmV3IGRpcmVjdGx5LgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaDogRGVjbGFyZSBjcmVhdGVVbmNhY2hlZC4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKTog
VXNlIFBhc3NSZWZQdHIgYW5kCisgICAgICAgIFJlZlB0ciBpbnN0ZWFkIG9mIE93blB0ci4gQW5k
IHVzZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGluc3RlYWQgb2YgbmV3LgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJp
bmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1Jl
c291cmNlQ29udGFpbmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVh
SW1wbCk6IE1vdmUgdGhlIGNvZGUgdGhhdCBjYWxscworICAgICAgICBTdG9yYWdlQXJlYVN5bmM6
OmNyZWF0ZSBvdXQgb2YgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6
Y3JlYXRlKTogTW92ZSBpdCBpbiBoZXJlLiBUaGlzIG1ha2VzIGl0IHNvIHdlCisgICAgICAgIGRv
bid0IHJlZiB0aGUgc3RvcmFnZSBhcmVhIGJlZm9yZSBmaW5pc2hpbmcgaXRzIGNyZWF0aW9uIGFu
ZCBjYWxsaW5nIGFkb3B0UmVmLgorCisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhaW50OjpkZWZhdWx0RmlsbCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBv
ZiBuZXcuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6ZGVmYXVsdFN0cm9rZSk6IERpdHRv
LgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOiBN
YWRlIHRoZSBjb25zdHJ1Y3RvciBwcml2YXRlCisgICAgICAgIGFuZCBhZGRlZCBhIGNyZWF0ZSBm
dW5jdGlvbiBzaW5jZSB0aGlzIGlzIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0IGFuZAorICAg
ICAgICBzaG91bGQgbm90IGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5LgorCiAyMDEwLTA2LTE2ICBE
YXdpdCBBbGVtYXllaHUgIDxhZGF3aXRAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDYxMTg2KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsOCArNTQ0LDggQEAgX19a
TjdXZWJDb3JlNUZyYW1lMjRjb21wdXRlQW5kU2V0VHlwaW5nUwogX19aTjdXZWJDb3JlNUZyYW1l
MjVtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50RVA3TlNBcnJheVBOU183RWxlbWVudEUKIF9fWk43
V2ViQ29yZTVGcmFtZTI4c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudEVQN05TQXJyYXlQTlNf
N0VsZW1lbnRFUG1QYgogX19aTjdXZWJDb3JlNUZyYW1lMzRzZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkRWIKK19fWk43V2ViQ29yZTVGcmFtZTZjcmVhdGVFUE5TXzRQYWdlRVBOU18y
MUhUTUxGcmFtZU93bmVyRWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWk43V2Vi
Q29yZTVGcmFtZTdzZXRWaWV3RU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGcmFtZVZpZXdFRUUKLV9f
Wk43V2ViQ29yZTVGcmFtZUMxRVBOU180UGFnZUVQTlNfMjFIVE1MRnJhbWVPd25lckVsZW1lbnRF
UE5TXzE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pON1dlYkNvcmU1RnJhbWVEMUV2CiBfX1pON1dl
YkNvcmU1SW1hZ2UxMnN1cHBvcnRzVHlwZUVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmU1SW1h
Z2UyMGxvYWRQbGF0Zm9ybVJlc291cmNlRVBLYwpAQCAtMTA1NSw0ICsxMDU1LDMgQEAgX3drU2V0
VXBGb250Q2FjaGUKIF93a1NpZ25hbENGUmVhZFN0cmVhbUVuZAogX3drU2lnbmFsQ0ZSZWFkU3Ry
ZWFtRXJyb3IKIF93a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzCi0KSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU0luaXRpYWxWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0luaXRp
YWxWYWx1ZS5oCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAgY2xhc3MgQ1NTSW5pdGlhbFZh
bHVlIDogcHVibGljIENTU1ZhbHVlIAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENT
U0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhwbGljaXQoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENT
U0luaXRpYWxWYWx1ZSogZXhwbGljaXRWYWx1ZSA9IG5ldyBDU1NJbml0aWFsVmFsdWUoZmFsc2Up
OworICAgICAgICBzdGF0aWMgQ1NTSW5pdGlhbFZhbHVlKiBleHBsaWNpdFZhbHVlID0gY3JlYXRl
KGZhbHNlKS5yZWxlYXNlUmVmKCk7CiAgICAgICAgIHJldHVybiBleHBsaWNpdFZhbHVlOwogICAg
IH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0
KCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBDU1NJbml0aWFsVmFsdWUqIGV4cGxpY2l0VmFsdWUg
PSBuZXcgQ1NTSW5pdGlhbFZhbHVlKHRydWUpOworICAgICAgICBzdGF0aWMgQ1NTSW5pdGlhbFZh
bHVlKiBleHBsaWNpdFZhbHVlID0gY3JlYXRlKHRydWUpLnJlbGVhc2VSZWYoKTsKICAgICAgICAg
cmV0dXJuIGV4cGxpY2l0VmFsdWU7CiAgICAgfQogCkBAIC00Nyw2ICs0NywxMSBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NJbml0aWFsVmFsdWU+
IGNyZWF0ZShib29sIGltcGxpY2l0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NJbml0aWFsVmFsdWUoaW1wbGljaXQpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIHNob3J0IGNzc1ZhbHVlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ltcGxp
Y2l0SW5pdGlhbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsaWNpdDsgfQogCkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTggKzU2LDMzIEBA
IHN0YXRpYyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgpCiAvLyBub24tcmVmY291bnRlZCBz
aW1wbGUgdHlwZSB3aXRoIHZhbHVlIHNlbWFudGljcy4gSW4gcHJhY3RpY2UgdGhlc2Ugc2hhcmlu
ZyB0cmlja3MgZ2V0IHNpbWlsYXIgbWVtb3J5IGJlbmVmaXRzIAogLy8gd2l0aCBsZXNzIG5lZWQg
Zm9yIHJlZmFjdG9yaW5nLgogCitpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZVVuY2FjaGVkSWRlbnRpZmllcihpbnQgaWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGlkZW50aWZp
ZXIpKTsKK30KKworaW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVVbmNhY2hlZENvbG9yKHVuc2lnbmVkIHJnYlZhbHVlKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmdiVmFsdWUpKTsKK30KKwor
aW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVVbmNhY2hlZChkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsKK30KKwogUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoaW50IGlkZW50KQogewogICAgIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
KiBpZGVudFZhbHVlQ2FjaGUgPSBuZXcgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPltudW1DU1NW
YWx1ZUtleXdvcmRzXTsKICAgICBpZiAoaWRlbnQgPj0gMCAmJiBpZGVudCA8IG51bUNTU1ZhbHVl
S2V5d29yZHMpIHsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwcmltaXRpdmVW
YWx1ZSA9IGlkZW50VmFsdWVDYWNoZVtpZGVudF07CiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpIHsKLSAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gYWRvcHRSZWYobmV3IENTU1ByaW1p
dGl2ZVZhbHVlKGlkZW50KSk7CisgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IGNyZWF0ZVVu
Y2FjaGVkSWRlbnRpZmllcihpZGVudCk7CiAgICAgICAgICAgICBpZGVudFZhbHVlQ2FjaGVbaWRl
bnRdID0gcHJpbWl0aXZlVmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlLnJlbGVhc2UoKTsKICAgICB9IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoaWRlbnQpKTsKKyAgICByZXR1cm4gY3JlYXRlVW5jYWNoZWRJZGVudGlmaWVy
KGlkZW50KTsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUNvbG9yKHVuc2lnbmVkIHJnYlZhbHVlKQpAQCAtNzYsMTcgKzkxLDE3IEBA
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGkKICAgICBzdGF0aWMgQ29s
b3JWYWx1ZUNhY2hlKiBjb2xvclZhbHVlQ2FjaGUgPSBuZXcgQ29sb3JWYWx1ZUNhY2hlOwogICAg
IC8vIFRoZXNlIGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIG9mIHRoZSBoYXNoIHRh
YmxlLgogICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6dHJhbnNwYXJlbnQpIHsKLSAgICAgICAg
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclRyYW5zcGFyZW50ID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIHN0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29sb3JUcmFuc3BhcmVudCA9IGNyZWF0ZVVuY2FjaGVkQ29sb3IoQ29sb3I6OnRy
YW5zcGFyZW50KS5yZWxlYXNlUmVmKCk7CiAgICAgICAgIHJldHVybiBjb2xvclRyYW5zcGFyZW50
OwogICAgIH0KICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6OndoaXRlKSB7Ci0gICAgICAgIHN0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29sb3JXaGl0ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDb2xvcjo6d2hpdGUpOworICAgICAgICBzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbG9y
V2hpdGUgPSBjcmVhdGVVbmNhY2hlZENvbG9yKENvbG9yOjp3aGl0ZSkucmVsZWFzZVJlZigpOwog
ICAgICAgICByZXR1cm4gY29sb3JXaGl0ZTsKICAgICB9CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBwcmltaXRpdmVWYWx1ZSA9IGNvbG9yVmFsdWVDYWNoZS0+Z2V0KHJnYlZhbHVlKTsK
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5y
ZWxlYXNlKCk7Ci0gICAgcHJpbWl0aXZlVmFsdWUgPSBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUocmdiVmFsdWUpKTsKKyAgICBwcmltaXRpdmVWYWx1ZSA9IGNyZWF0ZVVuY2FjaGVkQ29s
b3IocmdiVmFsdWUpOwogICAgIC8vIEp1c3Qgd2lwZSBvdXQgdGhlIGNhY2hlIGFuZCBzdGFydCBy
ZWJ1aWxkaW5nIHdoZW4gaXQgZ2V0cyB0b28gYmlnLgogICAgIGNvbnN0IGludCBtYXhDb2xvckNh
Y2hlU2l6ZSA9IDUxMjsKICAgICBpZiAoY29sb3JWYWx1ZUNhY2hlLT5zaXplKCkgPj0gbWF4Q29s
b3JDYWNoZVNpemUpCkBAIC0xMDksMTQgKzEyNCwxNCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDU1NQcmltaXRpCiAgICAgICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwcmltaXRpdmVWYWx1ZSA9IGludGVn
ZXJWYWx1ZUNhY2hlW2ludFZhbHVlXVt0eXBlXTsKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpIHsKLSAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IGFkb3B0UmVmKG5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOworICAgICAgICAgICAgICAgIHByaW1pdGl2
ZVZhbHVlID0gY3JlYXRlVW5jYWNoZWQodmFsdWUsIHR5cGUpOwogICAgICAgICAgICAgICAgIGlu
dGVnZXJWYWx1ZUNhY2hlW2ludFZhbHVlXVt0eXBlXSA9IHByaW1pdGl2ZVZhbHVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnJlbGVhc2UoKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWUsIHR5cGUpKTsKKyAgICByZXR1cm4gY3JlYXRlVW5jYWNoZWQodmFsdWUsIHR5cGUp
OwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsMTAgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBjcmVhdGUodW5zaWduZWQpOyAvLyBjb21waWxlLXRpbWUgZ3VhcmQK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBvcGVyYXRvciBUKigpOyAvLyBjb21waWxlLXRpbWUg
Z3VhcmQKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVV
bmNhY2hlZElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVVbmNhY2hlZENvbG9yKHVuc2lnbmVkIHJnYlZhbHVl
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVW5jYWNo
ZWQoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMgdHlwZSk7CisKICAgICB2b2lkIGluaXQoUGFzc1Jl
ZlB0cjxDb3VudGVyPik7CiAgICAgdm9pZCBpbml0KFBhc3NSZWZQdHI8UmVjdD4pOwogICAgIHZv
aWQgaW5pdChQYXNzUmVmUHRyPFBhaXI+KTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiA2MTE4NikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZh
dWx0U3R5bGUoKQogICAgIGlmIChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCkgewogICAgICAgICBB
U1NFUlQoZGVmYXVsdFN0eWxlKTsKICAgICAgICAgZGVsZXRlIGRlZmF1bHRTdHlsZTsKLSAgICAg
ICAgZGVsZXRlIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0OworICAgICAgICBzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldC0+ZGVyZWYoKTsKICAgICAgICAgZGVmYXVsdFN0eWxlID0gbmV3IENTU1J1bGVT
ZXQ7CiAgICAgICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gMDsKICAgICB9IGVsc2UgewpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gNjExODYpCisr
KyBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDYgQEAgU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYQog
I2lmbmRlZiBOREVCVUcKICAgICBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7
CiAjZW5kaWYKLSAgICBtX2RvY3VtZW50TG9hZGVyLT5hZGRTdWJyZXNvdXJjZUxvYWRlcih0aGlz
KTsKIH0KIAogU3VicmVzb3VyY2VMb2FkZXI6On5TdWJyZXNvdXJjZUxvYWRlcigpCkBAIC05OSw2
ICs5OCw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmMKICAgICBm
bC0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAogICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNv
dXJjZUxvYWRlcihmcmFtZSwgY2xpZW50LCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91
bGRDb250ZW50U25pZmYpKSk7CisgICAgc3VibG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hZGRT
dWJyZXNvdXJjZUxvYWRlcihzdWJsb2FkZXIuZ2V0KCkpOwogICAgIGlmICghc3VibG9hZGVyLT5s
b2FkKG5ld1JlcXVlc3QpKQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lv
biA2MTE4NikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNyBAQCBzdGF0aWMgaW5saW5lIEZyYW1lKiBwYXJlbnRGcm9tT3duZXJFbGVtCiAg
ICAgcmV0dXJuIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKIH0KIAotRnJhbWU6
OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBG
cmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpCitpbmxpbmUgRnJhbWU6OkZyYW1l
KFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxv
YWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAs
IG1fdHJlZU5vZGUodGhpcywgcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpKQog
ICAgICwgbV9sb2FkZXIodGhpcywgZnJhbWVMb2FkZXJDbGllbnQpCkBAIC0xNzQsMTYgKzE3NCwx
NyBAQCBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgWE1MTmFt
ZXM6OmluaXQoKTsKIAogICAgIGlmICghb3duZXJFbGVtZW50KSB7Ci0gICAgICAgIHBhZ2UtPnNl
dE1haW5GcmFtZSh0aGlzKTsKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAg
ICAgLy8gVG9wIGxldmVsIGZyYW1lIG9ubHkgZm9yIG5vdy4KICAgICAgICAgc2V0VGlsZWRCYWNr
aW5nU3RvcmVFbmFibGVkKHBhZ2UtPnNldHRpbmdzKCktPnRpbGVkQmFja2luZ1N0b3JlRW5hYmxl
ZCgpKTsKICNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIHBhZ2UtPmluY3JlbWVudEZyYW1l
Q291bnQoKTsKKwogICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugd2lsbCBub3QgZW5kIHVwIHdpdGgg
dHdvIGZyYW1lcyByZWZlcmVuY2luZyB0aGUgc2FtZSBvd25lciBlbGVtZW50LgotICAgICAgICBB
U1NFUlQoKCEob3duZXJFbGVtZW50LT5tX2NvbnRlbnRGcmFtZSkpIHx8IChvd25lckVsZW1lbnQt
Pm1fY29udGVudEZyYW1lLT5vd25lckVsZW1lbnQoKSAhPSBvd25lckVsZW1lbnQpKTsKLSAgICAg
ICAgb3duZXJFbGVtZW50LT5tX2NvbnRlbnRGcmFtZSA9IHRoaXM7CisgICAgICAgIEZyYW1lKiYg
Y29udGVudEZyYW1lU2xvdCA9IG93bmVyRWxlbWVudC0+bV9jb250ZW50RnJhbWU7CisgICAgICAg
IEFTU0VSVCghY29udGVudEZyYW1lU2xvdCB8fCBjb250ZW50RnJhbWVTbG90LT5vd25lckVsZW1l
bnQoKSAhPSBvd25lckVsZW1lbnQpOworICAgICAgICBjb250ZW50RnJhbWVTbG90ID0gdGhpczsK
ICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xOTEsNiArMTkyLDE0IEBAIEZyYW1lOjpGcmFt
ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckUKICNlbmRpZgogfQogCitQYXNzUmVmUHRyPEZy
YW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQoreworICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBhZG9wdFJlZihuZXcgRnJhbWUocGFnZSwgb3duZXJFbGVtZW50LCBjbGllbnQp
KTsKKyAgICBpZiAoIW93bmVyRWxlbWVudCkKKyAgICAgICAgcGFnZS0+c2V0TWFpbkZyYW1lKGZy
YW1lKTsKKyAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgpOworfQorCiBGcmFtZTo6fkZyYW1lKCkK
IHsKICAgICBzZXRWaWV3KDApOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDYxMTg2KQorKysgV2ViQ29yZS9w
YWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDEwICs3Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNlbmRpZgogICAgIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZyYW1lPiBjcmVhdGUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJhbWUocGFnZSwgb3duZXJFbGVtZW50LCBjbGll
bnQpKTsKLSAgICAgICAgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
KFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwogICAg
ICAgICB2b2lkIHNldFZpZXcoUGFzc1JlZlB0cjxGcmFtZVZpZXc+KTsKICAgICAgICAgfkZyYW1l
KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAkocmV2aXNpb24g
NjExODYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA2LCAy
MDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwzNSArMjIsNDAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCaWRpQ29udGV4dC5oIgogCi0jaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OlVuaWNvZGU7CiAKK2lubGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29u
dGV4dDo6Y3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBsZXZlbCwgRGlyZWN0aW9uIGRpcmVj
dGlvbiwgYm9vbCBvdmVycmlkZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEJpZGlDb250ZXh0KGxldmVsLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCBwYXJl
bnQpKTsKK30KKwogUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRleHQ6OmNyZWF0ZSh1
bnNpZ25lZCBjaGFyIGxldmVsLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBC
aWRpQ29udGV4dCogcGFyZW50KQogewogICAgIEFTU0VSVChkaXJlY3Rpb24gPT0gKGxldmVsICUg
MiA/IFJpZ2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQpKTsKIAogICAgIGlmIChwYXJlbnQpCi0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmlkaUNvbnRleHQobGV2ZWwsIGRpcmVjdGlvbiwgb3Zl
cnJpZGUsIHBhcmVudCkpOworICAgICAgICByZXR1cm4gY3JlYXRlVW5jYWNoZWQobGV2ZWwsIGRp
cmVjdGlvbiwgb3ZlcnJpZGUsIHBhcmVudCk7CiAKICAgICBBU1NFUlQobGV2ZWwgPD0gMSk7CiAg
ICAgaWYgKCFsZXZlbCkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEJpZGlDb250ZXh0
LCBsdHJDb250ZXh0LCAoMCwgTGVmdFRvUmlnaHQsIGZhbHNlLCAwKSk7Ci0gICAgICAgIGlmICgh
b3ZlcnJpZGUpCi0gICAgICAgICAgICByZXR1cm4gJmx0ckNvbnRleHQ7CisgICAgICAgIGlmICgh
b3ZlcnJpZGUpIHsKKyAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyQ29udGV4dCA9
IGNyZWF0ZVVuY2FjaGVkKDAsIExlZnRUb1JpZ2h0LCBmYWxzZSwgMCkucmVsZWFzZVJlZigpOwor
ICAgICAgICAgICAgcmV0dXJuIGx0ckNvbnRleHQ7CisgICAgICAgIH0KIAotICAgICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEJpZGlDb250ZXh0LCBsdHJPdmVycmlkZUNvbnRleHQsICgwLCBMZWZ0
VG9SaWdodCwgdHJ1ZSwgMCkpOwotICAgICAgICByZXR1cm4gJmx0ck92ZXJyaWRlQ29udGV4dDsK
KyAgICAgICAgc3RhdGljIEJpZGlDb250ZXh0KiBsdHJPdmVycmlkZUNvbnRleHQgPSBjcmVhdGVV
bmNhY2hlZCgwLCBMZWZ0VG9SaWdodCwgdHJ1ZSwgMCkucmVsZWFzZVJlZigpOworICAgICAgICBy
ZXR1cm4gbHRyT3ZlcnJpZGVDb250ZXh0OwogICAgIH0KIAotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQmlkaUNvbnRleHQsIHJ0bENvbnRleHQsICgxLCBSaWdodFRvTGVmdCwgZmFsc2UsIDApKTsK
LSAgICBpZiAoIW92ZXJyaWRlKQotICAgICAgICByZXR1cm4gJnJ0bENvbnRleHQ7CisgICAgaWYg
KCFvdmVycmlkZSkgeworICAgICAgICBzdGF0aWMgQmlkaUNvbnRleHQqIHJ0bENvbnRleHQgPSBj
cmVhdGVVbmNhY2hlZCgxLCBSaWdodFRvTGVmdCwgZmFsc2UsIDApLnJlbGVhc2VSZWYoKTsKKyAg
ICAgICAgcmV0dXJuIHJ0bENvbnRleHQ7CisgICAgfQogCi0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChCaWRpQ29udGV4dCwgcnRsT3ZlcnJpZGVDb250ZXh0LCAoMSwgUmlnaHRUb0xlZnQsIHRydWUs
IDApKTsKLSAgICByZXR1cm4gJnJ0bE92ZXJyaWRlQ29udGV4dDsKKyAgICBzdGF0aWMgQmlkaUNv
bnRleHQqIHJ0bE92ZXJyaWRlQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVkKDEsIFJpZ2h0VG9MZWZ0
LCB0cnVlLCAwKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIHJ0bE92ZXJyaWRlQ29udGV4dDsK
IH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpZGlDb250ZXh0JiBjMSwgY29uc3QgQmlkaUNv
bnRleHQmIGMyKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgJKHJldmlzaW9u
IDYxMTg2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDYsIDIw
MDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHQg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0
ZVVuY2FjaGVkKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLCBi
b29sIG92ZXJyaWRlLCBCaWRpQ29udGV4dCogcGFyZW50KTsKKwogICAgIHVuc2lnbmVkIGNoYXIg
bV9sZXZlbDsKICAgICB1bnNpZ25lZCBtX2RpcmVjdGlvbiA6IDU7IC8vIERpcmVjdGlvbgogICAg
IGJvb2wgbV9vdmVycmlkZSA6IDE7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTMg
KzkxLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmludmFsaWRhdGUKICAgICBt
YXJrRm9yTGF5b3V0QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24ob2JqZWN0KTsKIH0KIAotUGFzc093
blB0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmlt
aXRpdmVzKCkKK1Bhc3NSZWZQdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcygpCiB7CiAgICAgU1ZHRmlsdGVyRWxlbWVudCogZmlsdGVy
RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlckVsZW1lbnQqPihub2RlKCkpOwogICAgIGJv
b2wgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlID0gZmlsdGVyRWxlbWVudC0+cHJpbWl0aXZlVW5p
dHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAK
ICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIE93blB0cjxTVkdGaWx0ZXJC
dWlsZGVyPiBidWlsZGVyKG5ldyBTVkdGaWx0ZXJCdWlsZGVyKTsKKyAgICBSZWZQdHI8U1ZHRmls
dGVyQnVpbGRlcj4gYnVpbGRlciA9IFNWR0ZpbHRlckJ1aWxkZXI6OmNyZWF0ZSgpOwogICAgIGJ1
aWxkZXItPmNsZWFyRWZmZWN0cygpOwogICAgIGZvciAoTm9kZSogbm9kZSA9IGZpbHRlckVsZW1l
bnQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAg
ICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gNjExODYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIHN0cnVjdCBGaWx0ZXJEYXRhIHsKICAgICB9CiAKICAgICBSZWZQdHI8U1ZH
RmlsdGVyPiBmaWx0ZXI7Ci0gICAgT3duUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkZXI7Cisg
ICAgUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkZXI7CiAgICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBzb3VyY2VHcmFwaGljQnVmZmVyOwogICAgIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250
ZXh0OwogICAgIEZsb2F0UmVjdCBib3VuZGFyaWVzOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVj
dCopOwogCi0gICAgUGFzc093blB0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZFByaW1pdGl2ZXMo
KTsKKyAgICBQYXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkUHJpbWl0aXZlcygpOwog
CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0
dXJuIHRvVW5pdFR5cGUoc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxlbWVudCo+KG5vZGUoKSktPmZp
bHRlclVuaXRzKCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVV
bml0cygpIGNvbnN0IHsgcmV0dXJuIHRvVW5pdFR5cGUoc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxl
bWVudCo+KG5vZGUoKSktPnByaW1pdGl2ZVVuaXRzKCkpOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gNjExODYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4
LDcgKzU5OCw3IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWEKICAg
ICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAiZmlsdGVyVW5pdHMiLCBmaWx0ZXItPmZpbHRl
clVuaXRzKCkpOwogICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJwcmltaXRpdmVVbml0
cyIsIGZpbHRlci0+cHJpbWl0aXZlVW5pdHMoKSk7CiAgICAgICAgIHRzIDw8ICJcbiI7Ci0gICAg
ICAgIGlmIChPd25QdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRlciA9IGZpbHRlci0+YnVpbGRQ
cmltaXRpdmVzKCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWls
ZGVyID0gZmlsdGVyLT5idWlsZFByaW1pdGl2ZXMoKSkgewogICAgICAgICAgICAgaWYgKEZpbHRl
ckVmZmVjdCogbGFzdEVmZmVjdCA9IGJ1aWxkZXItPmxhc3RFZmZlY3QoKSkKICAgICAgICAgICAg
ICAgICBsYXN0RWZmZWN0LT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsK
ICAgICAgICAgfSAgICAgIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHJl
dmlzaW9uIDYxMTg2KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEyICs0NCw3IEBAIFN0b3JhZ2VBcmVhSW1wbDo6flN0b3JhZ2VB
cmVhSW1wbCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAotUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VUeXBlIHN0b3Jh
Z2VUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8U3Rv
cmFnZVN5bmNNYW5hZ2VyPiBzeW5jTWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlQXJlYUltcGwoc3RvcmFnZVR5cGUsIG9yaWdpbiwgc3lu
Y01hbmFnZXIsIHF1b3RhKSk7Ci19Ci0KLVN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBs
KFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiBzeW5jTWFuYWdlciwgdW5zaWduZWQg
cXVvdGEpCitpbmxpbmUgU3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgUGFzc1Jl
ZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+IHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKICAg
ICA6IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKG9y
aWdpbikKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUocXVvdGEpKQpAQCAt
NjEsMTMgKzU2LDIwIEBAIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2UK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NlY3VyaXR5T3JpZ2lu
KTsKICAgICBBU1NFUlQobV9zdG9yYWdlTWFwKTsKK30KKworUGFzc1JlZlB0cjxTdG9yYWdlQXJl
YUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNN
YW5hZ2VyPiBzeW5jTWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCit7CisgICAgUmVmUHRyPFN0b3Jh
Z2VBcmVhSW1wbD4gYXJlYSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlQXJlYUltcGwoc3RvcmFnZVR5
cGUsIG9yaWdpbiwgc3luY01hbmFnZXIsIHF1b3RhKSk7CiAKICAgICAvLyBGSVhNRTogSWYgdGhl
cmUncyBubyBiYWNraW5nIHN0b3JhZ2UgZm9yIExvY2FsU3RvcmFnZSwgdGhlIGRlZmF1bHQgV2Vi
S2l0IGJlaGF2aW9yIHNob3VsZCBiZSB0aGF0IG9mIHByaXZhdGUgYnJvd3NpbmcsCi0gICAgLy8g
bm90IHNpbGVudGx5IGlnbm9yaW5nIGl0LiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI1ODk0Ci0gICAgaWYgKG1fc3RvcmFnZVN5bmNNYW5hZ2VyKSB7Ci0gICAgICAg
IG1fc3RvcmFnZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUobV9zdG9yYWdlU3lu
Y01hbmFnZXIsIHRoaXMsIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
LSAgICAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFTeW5jKTsKKyAgICAvLyBub3Qgc2lsZW50bHkg
aWdub3JpbmcgaXQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg5
NAorICAgIGlmIChhcmVhLT5tX3N0b3JhZ2VTeW5jTWFuYWdlcikgeworICAgICAgICBhcmVhLT5t
X3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKGFyZWEtPm1fc3RvcmFn
ZVN5bmNNYW5hZ2VyLCBhcmVhLmdldCgpLCBhcmVhLT5tX3NlY3VyaXR5T3JpZ2luLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgICAgIEFTU0VSVChhcmVhLT5tX3N0b3JhZ2VBcmVhU3luYyk7
CiAgICAgfQorCisgICAgcmV0dXJuIGFyZWEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhSW1wbD4gU3RvcmFnZUFyZWFJbXBsOjpjb3B5KCkKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1BhaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAJKHJl
dmlzaW9uIDYxMTg2KQorKysgV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NiwxNCArNjYsMTQgQEAgU1ZHUGFpbnQ6On5TVkdQYWludCgpCiAKIFNWR1BhaW50KiBT
VkdQYWludDo6ZGVmYXVsdEZpbGwoKQogewotICAgIHN0YXRpYyBTVkdQYWludCogX2RlZmF1bHRG
aWxsID0gbmV3IFNWR1BhaW50KENvbG9yOjpibGFjayk7Ci0gICAgcmV0dXJuIF9kZWZhdWx0Rmls
bDsKKyAgICBzdGF0aWMgU1ZHUGFpbnQqIHN0YXRpY0RlZmF1bHRGaWxsID0gY3JlYXRlKENvbG9y
OjpibGFjaykucmVsZWFzZVJlZigpOworICAgIHJldHVybiBzdGF0aWNEZWZhdWx0RmlsbDsKIH0K
IAogU1ZHUGFpbnQqIFNWR1BhaW50OjpkZWZhdWx0U3Ryb2tlKCkKIHsKLSAgICBzdGF0aWMgU1ZH
UGFpbnQqIF9kZWZhdWx0U3Ryb2tlID0gbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfTk9ORSk7
Ci0gICAgcmV0dXJuIF9kZWZhdWx0U3Ryb2tlOworICAgIHN0YXRpYyBTVkdQYWludCogc3RhdGlj
RGVmYXVsdFN0cm9rZSA9IGNyZWF0ZShTVkdfUEFJTlRUWVBFX05PTkUpLnJlbGVhc2VSZWYoKTsK
KyAgICByZXR1cm4gc3RhdGljRGVmYXVsdFN0cm9rZTsKIH0KIAogU3RyaW5nIFNWR1BhaW50Ojp1
cmkoKSBjb25zdApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDYxMTg2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxTVkdGaWx0ZXJCdWlsZGVyPiB7CiAgICAgcHVibGljOgotICAg
ICAgICBTVkdGaWx0ZXJCdWlsZGVyKCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Zp
bHRlckJ1aWxkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGaWx0ZXJCdWls
ZGVyKTsgfQogCiAgICAgICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCk7CiAKQEAgLTQ2LDYgKzQ2LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGNsZWFyRWZmZWN0cygpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgU1ZHRmlsdGVyQnVpbGRlcigpOworCiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fYnVpbHRpbkVmZmVjdHM7CiAgICAgICAgIEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFtZWRFZmZlY3RzOwog
CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gNjEzMDcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA2LTE2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgYWRvcHRSZWYgYW5kIGNyZWF0ZSBmdW5jdGlvbnMgaW4gbW9yZSBjb2RlIHBhdGhz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDc2MAor
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6
IE1hZGUgY3JlYXRlIG5vIGxvbmdlcgorICAgICAgICBiZSBhbiBpbmxpbmUgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5KToKKyAgICAgICAgTW92ZWQgdGhlIGNhbGwgdG8gYWRkUGx1Z2lu
SW5zdGFuY2Ugb3V0IG9mIGhlcmUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6Y3JlYXRlKTogTW92ZSBpdCBpbiBoZXJlLgorICAgICAgICBUaGlzIG1ha2Vz
IHN1cmUgd2UgY2FsbCBhZG9wdFJlZiBvbiB0aGUgbmV3IHByb3h5IGJlZm9yZSBhbnkgY2FsbGVy
CisgICAgICAgIGNhbGxzIHJlZiBvbiBpdC4KKwogMjAxMC0wNi0xNiAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6
IFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkuaAkocmV2aXNpb24gNjExODYpCisrKyBXZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwx
MCArNjEsNyBAQCBjbGFzcyBQcm94eUluc3RhbmNlOwogICAgIAogY2xhc3MgTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5PiBjcmVhdGUoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIHBsdWdpbkhvc3RQ
cm94eSwgV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3LCBib29sIGZ1bGxG
cmFtZVBsdWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVsbEZyYW1l
UGx1Z2luKSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eT4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiwgV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3ICosIGJvb2wgZnVsbEZyYW1lUGx1Z2luKTsKICAgICB+TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5KCk7CiAgICAgCiAgICAgdWludDMyX3QgcGx1Z2luSUQoKSBjb25z
dCAKSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzcsMTQgKzIzNywxOSBAQCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Ok5l
dHNjYXBlUGx1CiAgICAgZG8gewogICAgICAgICBtX3BsdWdpbklEID0gKytwbHVnaW5JRENvdW50
ZXI7CiAgICAgfSB3aGlsZSAocGx1Z2luSG9zdFByb3h5LT5wbHVnaW5JbnN0YW5jZShtX3BsdWdp
bklEKSB8fCAhbV9wbHVnaW5JRCk7Ci0gICAgCi0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVn
aW5JbnN0YW5jZSh0aGlzKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBuZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHlDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmNyZWF0ZShOZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogcGx1Z2luSG9zdFByb3h5LCBXZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcsIGJvb2wgZnVsbEZyYW1lUGx1Z2luKQor
eworICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IHByb3h5ID0gYWRvcHRS
ZWYobmV3IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eShwbHVnaW5Ib3N0UHJveHksIHBsdWdp
blZpZXcsIGZ1bGxGcmFtZVBsdWdpbikpOworICAgIHBsdWdpbkhvc3RQcm94eS0+YWRkUGx1Z2lu
SW5zdGFuY2UocHJveHkuZ2V0KCkpOworICAgIHJldHVybiBwcm94eS5yZWxlYXNlKCk7Cit9CisK
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eSgpCiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpbkhvc3RQcm94eSk7CkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2MTMwNykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4IEBACisyMDEwLTA2LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYWRvcHRS
ZWYgYW5kIGNyZWF0ZSBmdW5jdGlvbnMgaW4gbW9yZSBjb2RlIHBhdGhzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDc2MAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaDogQ2hhbmdlIGdMYXlvdXRUZXN0Q29udHJvbGxl
ciB0byBhIFJlZlB0ci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjcmVhdGUpOiBBZGRl
ZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBEZWNs
YXJlIHRoZSBjcmVhdGUgZnVuY3Rpb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOiBVc2Ug
Y3JlYXRlIGluc3RlYWQgb2YgbmV3LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oOiBVc2UgUmVmUHRyIGluc3RlYWQgb2YgT3duUHRyLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJ1blRlc3Qp
OiBVc2UgUmVmUHRyIGFuZCBjcmVhdGUgaW5zdGVhZCBvZiBPd25QdHIgYW5kIG5ldy4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJ1
blRlc3QpOiBVc2UgUmVmUHRyIGFuZCBjcmVhdGUgaW5zdGVhZCBvZiBPd25QdHIgYW5kIG5ldy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKTogVXNlIGNyZWF0
ZSBhbmQgcmVsZWFzZVJlZgorICAgICAgICBpbnN0ZWFkIG9mIG5ldy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChydW5UZXN0KTog
VXNlIFJlZlB0ciBhbmQgY3JlYXRlIGluc3RlYWQgb2YgT3duUHRyIGFuZCBuZXcuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcDoKKyAgICAgICAgKHJ1
blRlc3QpOiBVc2UgUmVmUHRyIGFuZCBjcmVhdGUgaW5zdGVhZCBvZiBPd25QdHIgYW5kIG5ldy4K
KyAgICAgICAgKE15QXBwOjpPbkluaXQpOiBSZW1vdmVkIHVubmVlZGVkIGNvZGUgdG8gZGVsZXRl
IHRoZSBsYXlvdXQKKyAgICAgICAgdGVzdCBjb250cm9sbGVyLiBUaGlzIGlzIGRvbmUgZHVyaW5n
IGVhY2ggdGVzdC4KKwogMjAxMC0wNi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCBhZnRlciBuZXcgbWV0aG9kIGFk
ZGl0aW9uLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5oCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNlbmRpZgogCiAj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmICFPUyhPUEVO
QlNEKQogc3RkOjp3c3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBzdGQ6Ondz
dHJpbmcmIHVybCk7CkBAIC01NSw3ICs1Niw3IEBAIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVy
OwogZXh0ZXJuIHZvbGF0aWxlIGJvb2wgZG9uZTsKIAogLy8gRklYTUU6IFRoaXMgaXMgYSBiYWQg
YWJzdHJhY3Rpb24uICBXZSBzaG91bGQgaW5zdGVkIHBhc3MgdGhpcyB0byBvdGhlciBjb250cm9s
bGVyIG9iamVjdHMgd2hpY2ggbmVlZCBhY2Nlc3MgdG8gaXQuCi1leHRlcm4gTGF5b3V0VGVzdENv
bnRyb2xsZXIqIGdMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2V4dGVybiBSZWZQdHI8TGF5b3V0VGVz
dENvbnRyb2xsZXI+IGdMYXlvdXRUZXN0Q29udHJvbGxlcjsKIAogdm9pZCBkdW1wKCk7CiB2b2lk
IGRpc3BsYXlXZWJWaWV3KCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODMsNiArODMsMTEgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RD
b250cm9sbAogewogfQogCitQYXNzUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBj
b25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2gpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0ZXN0UGF0aE9yVVJMLCBleHBlY3RlZFBpeGVs
SGFzaCkpOworfQorCiAvLyBTdGF0aWMgRnVuY3Rpb25zCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1
bXBBc1BERkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gNjExODYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTIgQEAKICNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIGNsYXNzIExheW91
dFRlc3RDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5b3V0VGVzdENvbnRyb2xsZXI+
IHsKIHB1YmxpYzoKLSAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gY3JlYXRlKGNvbnN0IHN0
ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhl
bEhhc2gpOwogICAgIH5MYXlvdXRUZXN0Q29udHJvbGxlcigpOwogCiAgICAgdm9pZCBtYWtlV2lu
ZG93T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC0yNzEsNiArMjcyLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3SGVpZ2h0OwogCiBwcml2YXRlOgorICAgIExh
eW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25z
dCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2gpOworCiAgICAgYm9vbCBtX2R1bXBBc1BE
RjsKICAgICBib29sIG1fZHVtcEFzVGV4dDsKICAgICBib29sIG1fZHVtcEJhY2tGb3J3YXJkTGlz
dDsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcAkocmV2aXNpb24gNjExODYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBA
IFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJvb2wgdGVzdFNoZWxsTW9kZSkKIHsKICAgICBXZWJSdW50
aW1lRmVhdHVyZXM6OmVuYWJsZUdlb2xvY2F0aW9uKHRydWUpOwogICAgIG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuc2V0KG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcih0aGlzKSk7Ci0gICAg
bV9sYXlvdXRUZXN0Q29udHJvbGxlci5zZXQobmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMp
KTsKKyAgICBtX2xheW91dFRlc3RDb250cm9sbGVyID0gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZSh0aGlzKTsKICAgICBtX2V2ZW50U2VuZGVyLnNldChuZXcgRXZlbnRTZW5kZXIodGhpcykp
OwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxlci5zZXQobmV3IFBsYWluVGV4dENvbnRyb2xsZXIo
KSk7CiAgICAgbV90ZXh0SW5wdXRDb250cm9sbGVyLnNldChuZXcgVGV4dElucHV0Q29udHJvbGxl
cih0aGlzKSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaAkocmV2aXNpb24gNjExODYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIldlYlZpZXdIb3N0LmgiCiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiAvLyBUZXN0U2hlbGwgaXMgYSBjb250YWluZXIgb2YgZ2xvYmFsIHZhcmlhYmxl
cyBhbmQgaGFzIGJyaWRnZSBmdW5jdGlvbnMgYmV0d2VlbgpAQCAtMTQwLDEzICsxNDEsMTMgQEAg
cHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYldpZGdldCogbV9mb2N1c2VkV2lkZ2V0OwogICAgIGJv
b2wgbV90ZXN0U2hlbGxNb2RlOwogICAgIFdlYlZpZXdIb3N0KiBtX3dlYlZpZXdIb3N0OwotICAg
IE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcio+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI7Ci0gICAgT3duUHRyPEV2ZW50U2VuZGVyKj4gbV9ldmVudFNlbmRlcjsKLSAgICBPd25QdHI8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwotICAgIE93blB0
cjxQbGFpblRleHRDb250cm9sbGVyKj4gbV9wbGFpblRleHRDb250cm9sbGVyOwotICAgIE93blB0
cjxUZXh0SW5wdXRDb250cm9sbGVyKj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOwotICAgIE93blB0
cjxOb3RpZmljYXRpb25QcmVzZW50ZXIqPiBtX25vdGlmaWNhdGlvblByZXNlbnRlcjsKLSAgICBP
d25QdHI8VGVzdEV2ZW50UHJpbnRlcio+IG1fcHJpbnRlcjsKKyAgICBPd25QdHI8QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CisgICAgT3duUHRyPEV2
ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOworICAgIFJlZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxl
cj4gbV9sYXlvdXRUZXN0Q29udHJvbGxlcjsKKyAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxl
cj4gbV9wbGFpblRleHRDb250cm9sbGVyOworICAgIE93blB0cjxUZXh0SW5wdXRDb250cm9sbGVy
PiBtX3RleHRJbnB1dENvbnRyb2xsZXI7CisgICAgT3duUHRyPE5vdGlmaWNhdGlvblByZXNlbnRl
cj4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgT3duUHRyPFRlc3RFdmVudFByaW50ZXI+
IG1fcHJpbnRlcjsKICAgICBUZXN0UGFyYW1zIG1fcGFyYW1zOwogICAgIGludCBtX3RpbWVvdXQ7
IC8vIHRpbWVvdXQgdmFsdWUgaW4gbWlsbGlzZWNvbmQKIApJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA2MTE4
NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGludCBkdW1wUGl4ZWxzOwog
c3RhdGljIGludCBkdW1wVHJlZSA9IDE7CiAKIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBheENv
bnRyb2xsZXIgPSAwOwotTGF5b3V0VGVzdENvbnRyb2xsZXIqIGdMYXlvdXRUZXN0Q29udHJvbGxl
ciA9IDA7CitSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IGdMYXlvdXRUZXN0Q29udHJvbGxl
cjsKIHN0YXRpYyBHQ0NvbnRyb2xsZXIqIGdjQ29udHJvbGxlciA9IDA7CiBzdGF0aWMgV2ViS2l0
V2ViVmlldyogd2ViVmlldzsKIHN0YXRpYyBHdGtXaWRnZXQqIHdpbmRvdzsKQEAgLTQ4OCw3ICs0
ODgsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhCiAKICAgICBy
ZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKLSAgICBnTGF5b3V0VGVzdENvbnRy
b2xsZXIgPSBuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGVzdFVSTCwgZXhwZWN0ZWRQaXhlbEhh
c2gpOworICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlciA9IExheW91dFRlc3RDb250cm9sbGVyOjpj
cmVhdGUodGVzdFVSTCwgZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIHRvcExvYWRpbmdGcmFtZSA9
IDA7CiAgICAgZG9uZSA9IGZhbHNlOwogCkBAIC01NTMsOCArNTUzLDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYQogICAgIC8vIEEgYmxhbmsgbG9hZCBzZWVtcyB0
byBiZSBuZWNlc3NhcnkgdG8gcmVzZXQgc3RhdGUgYWZ0ZXIgY2VydGFpbiB0ZXN0cy4KICAgICB3
ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKIAotICAgIGdMYXlv
dXRUZXN0Q29udHJvbGxlci0+ZGVyZWYoKTsKLSAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXIgPSAw
OworICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhcigpOwogCiAgICAgLy8gdGVybWluYXRl
IHRoZSAocG9zc2libHkgZW1wdHkpIHBpeGVscyBibG9jayBhZnRlciBhbGwgdGhlIHN0YXRlIHJl
c2V0CiAgICAgc2VuZFBpeGVsUmVzdWx0c0VPRigpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gNjExODYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0
cmluZyYgdGVzdFBhCiB2b2xhdGlsZSBib29sIGRvbmU7CiAKIE5hdmlnYXRpb25Db250cm9sbGVy
KiBnTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSAwOwotTGF5b3V0VGVzdENvbnRyb2xsZXIqIGdMYXlv
dXRUZXN0Q29udHJvbGxlciA9IDA7CitSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IGdMYXlv
dXRUZXN0Q29udHJvbGxlcjsKIAogV2ViRnJhbWUgKm1haW5GcmFtZSA9IDA7CiAvLyBUaGlzIGlz
IHRoZSB0b3Btb3N0IGZyYW1lIHRoYXQgaXMgbG9hZGluZywgZHVyaW5nIGEgZ2l2ZW4gbG9hZCwg
b3IgbmlsIHdoZW4gbm8gbG9hZCBpcyAKQEAgLTEyMjEsNyArMTIyMSw3IEBAIHN0YXRpYyB2b2lk
IHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGEKICAgICAKICAgICByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAotICAgIGdMYXlvdXRUZXN0Q29udHJvbGxl
ciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0ZXN0VVJMLCBleHBlY3RlZFBpeGVsSGFzaCk7
CisgICAgZ0xheW91dFRlc3RDb250cm9sbGVyID0gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNyZWF0
ZSh0ZXN0VVJMLCBleHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmls
OwogICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsgLy8gdGhlIHByZXZpb3VzIHRlc3Qgc2hvdWxk
IGhhdmUgY2FsbGVkIGV2ZW50U2VuZGVyLm1vdXNlVXAgdG8gZHJvcCEKICAgICByZWxlYXNlQW5k
WmVybygmZHJhZ2dpbmdJbmZvKTsKQEAgLTEzMTEsOCArMTMxMSw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGEKICAgICBBU1NFUlQoQ0ZBcnJheUdldENvdW50KG9w
ZW5XaW5kb3dzUmVmKSA9PSAxKTsKICAgICBBU1NFUlQoQ0ZBcnJheUdldFZhbHVlQXRJbmRleChv
cGVuV2luZG93c1JlZiwgMCkgPT0gW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSk7CiAKLSAg
ICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRlcmVmKCk7Ci0gICAgZ0xheW91dFRlc3RDb250cm9s
bGVyID0gMDsKKyAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXIoKTsKIAogICAgIGlmIChp
Z25vcmVXZWJDb3JlTm9kZUxlYWtzKQogICAgICAgICBbV2ViQ29yZVN0YXRpc3RpY3Mgc3RvcEln
bm9yaW5nV2ViQ29yZU5vZGVMZWFrc107CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24gNjExODYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAwLDcgKzQwMCw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJl
ZSgpCiAKICAgICAvLyBjcmVhdGUgb3VyIGNvbnRyb2xsZXJzLiBUaGlzIGhhcyB0byBiZSBkb25l
IGJlZm9yZSBjb25uZWN0RnJhbWUsCiAgICAgLy8gYXMgaXQgZXhwb3J0cyB0aGVyZSB0byB0aGUg
SmF2YVNjcmlwdCBET00gd2luZG93LgotICAgIG1fY29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0
Q29udHJvbGxlcih0aGlzKTsKKyAgICBtX2NvbnRyb2xsZXIgPSBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlKHRoaXMpLnJlbGVhc2VSZWYoKTsKICAgICBjb25uZWN0KG1fY29udHJvbGxlciwg
U0lHTkFMKHNob3dQYWdlKCkpLCB0aGlzLCBTTE9UKHNob3dQYWdlKCkpKTsKICAgICBjb25uZWN0
KG1fY29udHJvbGxlciwgU0lHTkFMKGhpZGVQYWdlKCkpLCB0aGlzLCBTTE9UKGhpZGVQYWdlKCkp
KTsKIApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCShyZXZpc2lvbiA2MTE4NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQs
NyBAQCBDT01QdHI8SGlzdG9yeURlbGVnYXRlPiBzaGFyZWRIaXN0b3J5RGVsCiBJV2ViRnJhbWUq
IGZyYW1lOwogSFdORCB3ZWJWaWV3V2luZG93OwogCi1MYXlvdXRUZXN0Q29udHJvbGxlciogZ0xh
eW91dFRlc3RDb250cm9sbGVyID0gMDsKK1JlZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gZ0xh
eW91dFRlc3RDb250cm9sbGVyOwogCiBVSU5UX1BUUiB3YWl0VG9EdW1wV2F0Y2hkb2cgPSAwOwog
CkBAIC05MDMsNyArOTAzLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRl
c3RQYQogCiAgICAgQ0ZSZWxlYXNlKHVybCk7CiAKLSAgICA6OmdMYXlvdXRUZXN0Q29udHJvbGxl
ciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcihwYXRoT3JVUkwsIGV4cGVjdGVkUGl4ZWxIYXNo
KTsKKyAgICA6OmdMYXlvdXRUZXN0Q29udHJvbGxlciA9IExheW91dFRlc3RDb250cm9sbGVyOjpj
cmVhdGUocGF0aE9yVVJMLCBleHBlY3RlZFBpeGVsSGFzaCkucmVsZWFzZVJlZigpOwogICAgIGRv
bmUgPSBmYWxzZTsKICAgICB0b3BMb2FkaW5nRnJhbWUgPSAwOwogCkBAIC05OTQsOCArOTk0LDcg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYQogCiBleGl0OgogICAg
IFN5c0ZyZWVTdHJpbmcodXJsQlN0cik7Ci0gICAgOjpnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRl
cmVmKCk7Ci0gICAgOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIgPSAwOworICAgIDo6Z0xheW91dFRl
c3RDb250cm9sbGVyLmNsZWFyKCk7CiAKICAgICByZXR1cm47CiB9CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcAkocmV2aXNp
b24gNjExODYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJl
ZVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBGSUxFKiBsb2dPdXRwdXQ7CiAKLUxheW91dFRlc3RDb250cm9sbGVyKiBnTGF5b3V0
VGVzdENvbnRyb2xsZXIgPSAwOworUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBnTGF5b3V0
VGVzdENvbnRyb2xsZXI7CiBzdGF0aWMgd3hXZWJWaWV3KiB3ZWJWaWV3Owogc3RhdGljIHd4VGlt
ZXIqIGlkbGVUaW1lcjsKIApAQCAtMjE1LDggKzIxNSw3IEBAIHZvaWQgZHVtcCgpCiAgICAgZmZs
dXNoKHN0ZG91dCk7CiAgICAgZmZsdXNoKHN0ZGVycik7CiAKLSAgICBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmRlcmVmKCk7Ci0gICAgZ0xheW91dFRlc3RDb250cm9sbGVyID0gMDsKKyAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXIoKTsKIH0KIAogc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCB3eFN0cmluZyB0ZXN0UGF0aE9yVVJMKQpAQCAtMjM4LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lk
IHJ1blRlc3QoY29uc3Qgd3hTdHJpbmcgdGVzdFAKICAgICBpZiAoaHR0cCA9PSBzdHJpbmc6Om5w
b3MpCiAgICAgICAgIHBhdGhPclVSTC5pbnNlcnQoMCwgImZpbGU6Ly8iKTsKICAgICAKLSAgICBn
TGF5b3V0VGVzdENvbnRyb2xsZXIgPSBuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIocGF0aE9yVVJM
LCBleHBlY3RlZFBpeGVsSGFzaCk7CisgICAgZ0xheW91dFRlc3RDb250cm9sbGVyID0gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNyZWF0ZShwYXRoT3JVUkwsIGV4cGVjdGVkUGl4ZWxIYXNoKS5yZWxl
YXNlUmVmKCk7CiAgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgd3hU
aGVBcHAtPkV4aXRNYWluTG9vcCgpOwogICAgIH0KQEAgLTMzNyw5ICszMzYsNiBAQCBib29sIE15
QXBwOjpPbkluaXQoKQogICAgIGRlbGV0ZSBsb2dnZXI7CiAgICAgZmNsb3NlKGxvZ091dHB1dCk7
CiAgICAgCi0gICAgZGVsZXRlIGdMYXlvdXRUZXN0Q29udHJvbGxlcjsKLSAgICBnTGF5b3V0VGVz
dENvbnRyb2xsZXIgPSAwOwotCiAgICAgLy8gcmV0dXJuaW5nIGZhbHNlIHNodXRzIHRoZSBhcHAg
ZG93bgogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>