<?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>195840</bug_id>
          
          <creation_ts>2019-03-15 18:07:57 -0700</creation_ts>
          <short_desc>[JSC] jsSubstring should resolve rope before calling JSRopeString::create</short_desc>
          <delta_ts>2019-03-18 10:51:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517316</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-15 18:07:57 -0700</bug_when>
    <thetext>[JSC] jsSubstring should resolve rope before calling JSRopeString::create</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517319</commentid>
    <comment_count>1</comment_count>
      <attachid>364895</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-15 18:15:56 -0700</bug_when>
    <thetext>Created attachment 364895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517323</commentid>
    <comment_count>2</comment_count>
      <attachid>364898</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-15 18:23:44 -0700</bug_when>
    <thetext>Created attachment 364898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517325</commentid>
    <comment_count>3</comment_count>
      <attachid>364899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-15 18:27:06 -0700</bug_when>
    <thetext>Created attachment 364899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517469</commentid>
    <comment_count>4</comment_count>
      <attachid>364899</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-16 13:59:54 -0700</bug_when>
    <thetext>Comment on attachment 364899
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        We can find that a lot of substrings for length = 1 are allocated in RAMification regexp tests. This patch avoids creation of these

How much memory does this patch save?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517559</commentid>
    <comment_count>5</comment_count>
      <attachid>364899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-17 15:14:20 -0700</bug_when>
    <thetext>Comment on attachment 364899
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        We can find that a lot of substrings for length = 1 are allocated in RAMification regexp tests. This patch avoids creation of these
&gt; 
&gt; How much memory does this patch save?

It shows (patched) 34938880 v.s. (tot) 36163584  in non-JIT regexp, 3.5%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517776</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 10:50:53 -0700</bug_when>
    <thetext>Committed r243081: &lt;https://trac.webkit.org/changeset/243081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517777</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 10:51:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/48984367&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364895</attachid>
            <date>2019-03-15 18:15:56 -0700</date>
            <delta_ts>2019-03-15 18:23:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195840-20190315181555.patch</filename>
            <type>text/plain</type>
            <size>26570</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NGRiNzFhOWNmMGNkNDNmMGE5MzM0NTk3YTFhY2YyYjE3YTc5ODVkLi4zNDRmMjQxOTZjZDFmYzc1
MWI0ZDdlNjgyMzBlNDZlNzdiODY2ZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGpzU3Vic3RyaW5nIHNob3VsZCByZXNvbHZlIHJvcGUgYmVmb3Jl
IGNhbGxpbmcgSlNSb3BlU3RyaW5nOjpjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGpzU3Vic3RyaW5nIGFsd2F5cyBlbmRzIHVwIHJlc29sdmlu
ZyByb3BlIG9mIHRoZSBiYXNlIHN0cmluZyBiZWNhdXNlIHN1YnN0cmluZyBKU1JvcGVTdHJpbmcg
b25seSBhY2NlcHRzIG5vbi1yb3BlIEpTU3RyaW5nCisgICAgICAgIGFzIGl0cyBiYXNlLiBJbnN0
ZWFkIG9mIHJlc29sdmluZyByb3BlcyBpbiBmaW5pc2hDcmVhdGlvblN1YnN0cmluZywgd2Ugc2hv
dWxkIHJlc29sdmUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gSlNSb3BlU3RyaW5nLgorICAgICAgICBT
byB0aGF0LCB3ZSBjYW4gYWNjZXNzIHN0cmluZyBkYXRhIGJlZm9yZSBjcmVhdGluZyBKU1JvcGVT
dHJpbmcsIGFuZCB3ZSBjYW4gaW50cm9kdWNlIG9wdGltaXphdGlvbnMgbGlrZSBhdm9pZGluZyBj
cmVhdGlvbgorICAgICAgICBvZiBzaW5nbGUgY2hhcmFjdGVyIHN1YnN0cmluZ3MuCisKKyAgICAg
ICAgV2UgY2FuIGZpbmQgdGhhdCBhIGxvdCBvZiBzdWJzdHJpbmdzIGZvciBsZW5ndGggPSAxIGFy
ZSBhbGxvY2F0ZWQgaW4gUkFNaWZpY2F0aW9uIHJlZ2V4cCB0ZXN0cy4gVGhpcyBwYXRjaCBhdm9p
ZHMgY3JlYXRpb24gb2YgdGhlc2UKKyAgICAgICAgc3RyaW5ncyB0byBzYXZlIG1lbW9yeS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RyZW5ndGggZXJyb3IgY2hlY2tzIGNhdXNlZCBieSBy
b3BlIHJlc29sdXRpb24gZm9yIGJhc2Ugb2Ygc3Vic3RyaW5ncy4gUHJldmlvdXNseSB3ZSBzb21l
dGltZXMgbWlzcyB0aGlzIGNoZWNrcy4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmR1bXBUb1N0cmVhbSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6OmpzU3Vic3RyaW5nT2ZSZXNvbHZl
ZCk6CisgICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hl
ZFJlc3VsdDo6bGFzdFJlc3VsdCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIGhhdmUgbGVuZ3RoID0g
MCBwYXRoIHNpbmNlIGpzU3Vic3RyaW5nIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIGxlbmd0
aCA9PSAwLgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OmxlZnRDb250ZXh0KToK
KyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpyaWdodENvbnRleHQpOgorICAgICAg
ICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OnNldElucHV0KToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBHbG9iYWxEYXRhOjpn
ZXRCYWNrcmVmKToKKyAgICAgICAgKEpTQzo6UmVnRXhwR2xvYmFsRGF0YTo6Z2V0TGFzdFBhcmVu
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAoSlNDOjpqc1N0
cmluZ1dpdGhSZXVzZSk6CisgICAgICAgIChKU0M6OmpzU3Vic3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJj
aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6
c3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGwpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHIpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVu
Y1RvVXBwZXJDYXNlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6c3RyaW5nU2xpY2UpOgorCiAyMDE5LTAzLTE1ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBtb3JlIHByb3Bl
cnRpZXMgbGF6aWx5LWFsbG9jYXRlZCBpbiBKU0dsb2JhbE9iamVjdCwgaW5jbHVkaW5nIHByb3Bl
cnRpZXMgb25seSB1c2VkIGluIEpJVCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCA3ZmIyNDZlOGIxZTc3ZmUwMjcyZDk4MjE2OWQ4MDQzZDFl
ZmIwMjkyLi40Y2ZhYzFkNGIyZWI5ZjIzNmU1OTZlOTM2MDA2OWQyZTI3OWI5MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxNjgsNyArMjE2
OCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTdWJzdHIoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIGludDMyCiAKICAgICBhdXRvIHN0cmluZyA9IGpzQ2Fz
dDxKU1N0cmluZyo+KGNlbGwpLT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKLSAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBm
cm9tLCBzcGFuKTsKKyAgICByZXR1cm4ganNTdWJzdHJpbmcoJnZtLCBzdHJpbmcsIGZyb20sIHNw
YW4pOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU2xpY2UoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgZW5kKQpA
QCAtMjE4MSw4ICsyMTgxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmlu
Z1NsaWNlKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsLCBpbnQzMl8KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHVpbnQ2NF90PihKU1N0cmluZzo6TWF4TGVuZ3RoKSA8PSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpLCAiIik7CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHN0cmluZ1NsaWNlKGV4ZWMsIFdURk1vdmUoc3RyaW5n
KSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIHN0cmluZ1NsaWNlKHZtLCBXVEZNb3ZlKHN0cmlu
ZyksIHN0YXJ0LCBlbmQpOwogfQogCiBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25U
b0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsIHVpbnQzMl90IGZh
aWxpbmdJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApp
bmRleCBjODM2ZmEyZTJkZmE5OWM2NDY3OGIzOTY4NjRlN2NlYzQyZmRiZjNlLi5kY2FlYWQ5N2Fk
MDU0YTcwOGNhNGEzYWQ5ODVjMDE1Zjk0MzFjOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC03NSw5ICs3NSwxMiBAQCB2b2lkIEpTU3RyaW5nOjpk
dW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQcmludFN0cmVhbSYgb3V0KQogICAgIGNv
bnN0IEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTU3RyaW5nKj4oY2VsbCk7
CiAgICAgb3V0LnByaW50ZigiPCVwLCAlcywgWyV1XSwgIiwgdGhpc09iamVjdCwgdGhpc09iamVj
dC0+Y2xhc3NOYW1lKHZtKSwgdGhpc09iamVjdC0+bGVuZ3RoKCkpOwogICAgIHVpbnRwdHJfdCBw
b2ludGVyID0gdGhpc09iamVjdC0+bV9maWJlcjsKLSAgICBpZiAocG9pbnRlciAmIGlzUm9wZUlu
UG9pbnRlcikKLSAgICAgICAgb3V0LnByaW50ZigiW3JvcGVdIik7Ci0gICAgZWxzZSB7CisgICAg
aWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpIHsKKyAgICAgICAgaWYgKHBvaW50ZXIgJiBK
U1JvcGVTdHJpbmc6OmlzU3Vic3RyaW5nSW5Qb2ludGVyKQorICAgICAgICAgICAgb3V0LnByaW50
ZigiW3N1YnN0cmluZ10iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50Zigi
W3JvcGVdIik7CisgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFdURjo6U3RyaW5nSW1wbCogb3Vy
SW1wbCA9IGJpdHdpc2VfY2FzdDxTdHJpbmdJbXBsKj4ocG9pbnRlcikpIHsKICAgICAgICAgICAg
IGlmIChvdXJJbXBsLT5pczhCaXQoKSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJbOCAl
cF0iLCBvdXJJbXBsLT5jaGFyYWN0ZXJzOCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCmluZGV4IGUxMTFmN2U1ZTFlNjhhYzJjZmQzZTk1Y2YyZTBkZTYwNWM4Mjcx
ZjcuLjI1ZTk1M2Q5NWRhNDdkYmQzNjIwNjk5NzRlYjBlZTM4ZmZhMjI3ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNDksNyArNDksNiBAQCBKU1N0cmlu
ZyoganNTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkg
c3RyaW5nIGlmIHBhc3NlZAogSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNKiwg
VUNoYXIpOwogSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSosIFVD
aGFyKTsKIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhWTSosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLUpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAK
IC8vIE5vbi10cml2aWFsIHN0cmluZ3MgYXJlIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgbG9uZy4K
IC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpzU3RyaW5n
LgpAQCAtNTM2LDE3ICs1MzUsNyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMg
SlNTdHJpbmcgewogICAgICAgICBpbml0aWFsaXplU3Vic3RyaW5nQmFzZShiYXNlKTsKICAgICAg
ICAgaW5pdGlhbGl6ZVN1YnN0cmluZ09mZnNldChvZmZzZXQpOwogICAgICAgICBBU1NFUlQobGVu
Z3RoID09IHRoaXMtPmxlbmd0aCgpKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZmluaXNoQ3JlYXRpb25TdWJzdHJpbmcoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewot
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIEpTU3RyaW5nKiB1cGRh
dGVkQmFzZSA9IHN1YnN0cmluZ0Jhc2UoKTsKLSAgICAgICAgLy8gRm9yIG5vdywgbGV0J3Mgbm90
IGFsbG93IHN1YnN0cmluZ3Mgd2l0aCBhIHJvcGUgYmFzZS4KLSAgICAgICAgLy8gUmVzb2x2ZSBu
b24tc3Vic3RyaW5nIHJvcGUgYmFzZXMgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggaXQu
Ci0gICAgICAgIC8vIEZJWE1FOiBFdmFsdWF0ZSBpZiB0aGlzIHdvdWxkIGJlIHdvcnRoIGFkZGlu
ZyBtb3JlIGJyYW5jaGVzLgotICAgICAgICBpZiAodXBkYXRlZEJhc2UtPmlzUm9wZSgpKQotICAg
ICAgICAgICAganNDYXN0PEpTUm9wZVN0cmluZyo+KHVwZGF0ZWRCYXNlKS0+cmVzb2x2ZVJvcGUo
ZXhlYyk7CisgICAgICAgIEFTU0VSVCghYmFzZS0+aXNSb3BlKCkpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBmaW5pc2hDcmVhdGlvblN1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZt
KQpAQCAtNTk3LDE1ICs1ODYsNiBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMg
SlNTdHJpbmcgewogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KIAotICAgIHN0YXRp
YyBKU1JvcGVTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAg
SlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Jv
cGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9mZnNldCwgbGVuZ3Ro
KTsKLSAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmluZyh2bSwgZXhlYyk7
Ci0gICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmxlbmd0aCgpKTsKLSAgICAgICAgQVNTRVJUKG5l
d1N0cmluZy0+aXNSb3BlKCkpOwotICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwotICAgIH0KLQog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlU3Vic3RyaW5nT2ZS
ZXNvbHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEpTU3Ry
aW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAg
ICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSb3BlU3RyaW5nPih2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVTdHJpbmcoU3Vi
c3RyaW5nT2ZSZXNvbHZlZCwgdm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKQEAgLTg1MCwxNiAr
ODMwLDMxIEBAIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcm
IHMpCiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCi1p
bmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0
cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitpbmxpbmUgSlNTdHJp
bmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogYmFzZSwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG9mZnNldCA8
PSBzLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBzLT5sZW5ndGgoKSk7Ci0gICAg
QVNTRVJUKG9mZnNldCArIGxlbmd0aCA8PSBzLT5sZW5ndGgoKSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQVNTRVJUKG9mZnNldCA8PSBiYXNlLT5s
ZW5ndGgoKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBiYXNlLT5sZW5ndGgoKSk7CisgICAgQVNT
RVJUKG9mZnNldCArIGxlbmd0aCA8PSBiYXNlLT5sZW5ndGgoKSk7CiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKLSAgICBpZiAo
IW9mZnNldCAmJiBsZW5ndGggPT0gcy0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzOwotICAg
IHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgZXhlYywgcywgb2Zmc2V0LCBsZW5ndGgp
OworICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0aCA9PSBiYXNlLT5sZW5ndGgoKSkKKyAgICAgICAg
cmV0dXJuIGJhc2U7CisKKyAgICAvLyBGb3Igbm93LCBsZXQncyBub3QgYWxsb3cgc3Vic3RyaW5n
cyB3aXRoIGEgcm9wZSBiYXNlLgorICAgIC8vIFJlc29sdmUgbm9uLXN1YnN0cmluZyByb3BlIGJh
c2VzIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIGl0LgorICAgIC8vIEZJWE1FOiBFdmFs
dWF0ZSBpZiB0aGlzIHdvdWxkIGJlIHdvcnRoIGFkZGluZyBtb3JlIGJyYW5jaGVzLgorICAgIGlm
IChiYXNlLT5pc1N1YnN0cmluZygpKSB7CisgICAgICAgIEpTUm9wZVN0cmluZyogYmFzZVJvcGUg
PSBqc0Nhc3Q8SlNSb3BlU3RyaW5nKj4oYmFzZSk7CisgICAgICAgIGJhc2UgPSBiYXNlUm9wZS0+
c3Vic3RyaW5nQmFzZSgpOworICAgICAgICBvZmZzZXQgPSBiYXNlUm9wZS0+c3Vic3RyaW5nT2Zm
c2V0KCkgKyBvZmZzZXQ7CisgICAgICAgIEFTU0VSVCghYmFzZS0+aXNSb3BlKCkpOworICAgIH0g
ZWxzZSBpZiAoYmFzZS0+aXNSb3BlKCkpIHsKKyAgICAgICAganNDYXN0PEpTUm9wZVN0cmluZyo+
KGJhc2UpLT5yZXNvbHZlUm9wZShleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisgICAgfQorICAgIHJldHVybiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQo
dm0sIG51bGxwdHIsIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogaW5saW5lIEpTU3RyaW5n
KiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJy
YWxDb250ZXh0LCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CkBAIC04NjcsMTAgKzg2MiwxNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nT2ZSZXNv
bHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleAogICAgIEFTU0VS
VChvZmZzZXQgPD0gcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChsZW5ndGggPD0gcy0+bGVuZ3Ro
KCkpOwogICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gcy0+bGVuZ3RoKCkpOworICAgIEFT
U0VSVCghcy0+aXNSb3BlKCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gdm0u
c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICAgaWYgKCFvZmZzZXQgJiYgbGVuZ3RoID09
IHMtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gczsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsK
KyAgICAgICAgYXV0byYgYmFzZSA9IHMtPnZhbHVlSW50ZXJuYWwoKTsKKyAgICAgICAgVUNoYXIg
Y2hhcmFjdGVyID0gYmFzZS5jaGFyYWN0ZXJBdChvZmZzZXQpOworICAgICAgICBpZiAoY2hhcmFj
dGVyIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKKyAgICAgICAgICAgIHJldHVybiB2bS5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGNoYXJhY3Rlcik7CisgICAgfQogICAg
IHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGRlZmVy
cmFsQ29udGV4dCwgcywgb2Zmc2V0LCBsZW5ndGgpOwogfQogCkBAIC05MTgsNyArOTIwLDYgQEAg
aW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQog
aW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4g
anNFbXB0eVN0cmluZygmZXhlYy0+dm0oKSk7IH0KIGlubGluZSBKU1N0cmluZyoganNTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzU3RyaW5nKCZleGVj
LT52bSgpLCBzKTsgfQogaW5saW5lIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFVDaGFyIGMpIHsgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KCZleGVjLT52bSgpLCBjKTsgfQotaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT52bSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7
IH0KIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCks
IHMpOyB9CiBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIFN0cmluZyYmIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwg
V1RGTW92ZShzKSk7IH0KIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0o
KSwgcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENhY2hlZFJlc3VsdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
YWNoZWRSZXN1bHQuY3BwCmluZGV4IDllMTAwZDI0MDNjNTRkYTYxMWIzMGE4OGMxYjg5NzM1NmNl
OTk3YWEuLmE2MTA1MDliNzZmZjM2YWUzYTA4ODUxYzA4OTBjYjg1MjFkOWY2NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNw
cApAQCAtNDYsMTQgKzQ2LDIxIEBAIHZvaWQgUmVnRXhwQ2FjaGVkUmVzdWx0Ojp2aXNpdEFnZ3Jl
Z2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6
bGFzdFJlc3VsdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldCh2
bSwgb3duZXIsIG1fbGFzdElucHV0LmdldCgpKTsKICAgICAgICAgaWYgKCFtX2xhc3RSZWdFeHAp
CiAgICAgICAgICAgICBtX2xhc3RSZWdFeHAuc2V0KHZtLCBvd25lciwgdm0ucmVnRXhwQ2FjaGUo
KS0+ZW5zdXJlRW1wdHlSZWdFeHAodm0pKTsKKworICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBu
dWxscHRyOwogICAgICAgICBpZiAobV9yZXN1bHQpCi0gICAgICAgICAgICBtX3JlaWZpZWRSZXN1
bHQuc2V0V2l0aG91dFdyaXRlQmFycmllcihjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVn
RXhwLmdldCgpLCBtX3Jlc3VsdC5zdGFydCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9s
YXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQuc3RhcnQpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCkpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGNyZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIG1f
cmVpZmllZFJlc3VsdC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHJlc3VsdCk7CiAgICAgICAgIG1f
cmVpZmllZExlZnRDb250ZXh0LmNsZWFyKCk7CiAgICAgICAgIG1fcmVpZmllZFJpZ2h0Q29udGV4
dC5jbGVhcigpOwogICAgICAgICBtX3JlaWZpZWQgPSB0cnVlOwpAQCAtNjUsMTkgKzcyLDM0IEBA
IEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvd25lcikKIEpTU3RyaW5nKiBSZWdFeHBDYWNoZWRSZXN1bHQ6OmxlZnRDb250
ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVyKQogewogICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSdyZSByZWlmaWVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgbGFzdFJlc3VsdChleGVjLCBvd25l
cik7Ci0gICAgaWYgKCFtX3JlaWZpZWRMZWZ0Q29udGV4dCkKLSAgICAgICAgbV9yZWlmaWVkTGVm
dENvbnRleHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBtX3Jlc3VsdC5zdGFydCA/IGpzU3Vic3Ry
aW5nKGV4ZWMsIG1fcmVpZmllZElucHV0LmdldCgpLCAwLCBtX3Jlc3VsdC5zdGFydCkgOiBqc0Vt
cHR5U3RyaW5nKGV4ZWMpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKworICAgIGlmICghbV9yZWlmaWVkTGVmdENvbnRleHQpIHsKKyAgICAgICAgSlNTdHJpbmcq
IGxlZnRDb250ZXh0ID0ganNTdWJzdHJpbmcoZXhlYywgbV9yZWlmaWVkSW5wdXQuZ2V0KCksIDAs
IG1fcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgICAgIG1fcmVpZmllZExlZnRDb250ZXh0LnNldCh2bSwgb3duZXIsIGxlZnRD
b250ZXh0KTsKKyAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZExlZnRDb250ZXh0LmdldCgpOwog
fQogCiBKU1N0cmluZyogUmVnRXhwQ2FjaGVkUmVzdWx0OjpyaWdodENvbnRleHQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogb3duZXIpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZp
ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBsYXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIGlmICghbV9yZWlmaWVkUmln
aHRDb250ZXh0KSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fcmVpZmllZElucHV0LT5s
ZW5ndGgoKTsKLSAgICAgICAgbV9yZWlmaWVkUmlnaHRDb250ZXh0LnNldChleGVjLT52bSgpLCBv
d25lciwgbV9yZXN1bHQuZW5kICE9IGxlbmd0aCA/IGpzU3Vic3RyaW5nKGV4ZWMsIG1fcmVpZmll
ZElucHV0LmdldCgpLCBtX3Jlc3VsdC5lbmQsIGxlbmd0aCAtIG1fcmVzdWx0LmVuZCkgOiBqc0Vt
cHR5U3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgSlNTdHJpbmcqIHJpZ2h0Q29udGV4dCA9IGpzU3Vi
c3RyaW5nKGV4ZWMsIG1fcmVpZmllZElucHV0LmdldCgpLCBtX3Jlc3VsdC5lbmQsIGxlbmd0aCAt
IG1fcmVzdWx0LmVuZCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOworICAgICAgICBtX3JlaWZpZWRSaWdodENvbnRleHQuc2V0KHZtLCBvd25lciwgcmlnaHRD
b250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZFJpZ2h0Q29udGV4dC5nZXQoKTsK
IH0KQEAgLTg1LDExICsxMDcsMTcgQEAgSlNTdHJpbmcqIFJlZ0V4cENhY2hlZFJlc3VsdDo6cmln
aHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVyKQogdm9pZCBSZWdFeHBD
YWNoZWRSZXN1bHQ6OnNldElucHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVyLCBK
U1N0cmluZyogaW5wdXQpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZpZWQsIG90aGVy
d2lzZSBtX3JlaWZpZWRJbnB1dCB3aWxsIGJlIGlnbm9yZWQuCisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBs
YXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogICAgIGxlZnRDb250ZXh0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHJpZ2h0Q29udGV4dChleGVjLCBvd25lcik7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBBU1NFUlQobV9yZWlm
aWVkKTsKLSAgICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIGlucHV0KTsK
KyAgICBtX3JlaWZpZWRJbnB1dC5zZXQodm0sIG93bmVyLCBpbnB1dCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBH
bG9iYWxEYXRhLmNwcAppbmRleCBjMzZkYWYyZjUxOTg3NGVkMzEyNTZmZWFjZjdjZDU4ZmZjNmM4
OGVkLi45Y2JmNGE3ZGRlNmE0MzA5MDkyYzVlZDQ5NWY2ZjRiMjNhYjNkNGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBHbG9iYWxEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBHbG9iYWxEYXRhLmNwcApAQCAt
MzUsNyArMzUsMTEgQEAgdm9pZCBSZWdFeHBHbG9iYWxEYXRhOjp2aXNpdEFnZ3JlZ2F0ZShTbG90
VmlzaXRvciYgdmlzaXRvcikKIAogSlNWYWx1ZSBSZWdFeHBHbG9iYWxEYXRhOjpnZXRCYWNrcmVm
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIG93bmVyLCB1bnNpZ25lZCBpKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0UmVz
dWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CiAgICAgaWYgKGkgPCBhcnJheS0+bGVuZ3RoKCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBKU1ZhbHVlKGFycmF5KS5nZXQoZXhlYywgaSk7CkBAIC00MywxMiArNDcsMTcgQEAgSlNWYWx1
ZSBSZWdFeHBHbG9iYWxEYXRhOjpnZXRCYWNrcmVmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIG93bmVyLCB1bnMKICAgICAgICAgaWYgKCFyZXN1bHQuaXNVbmRlZmluZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5n
KGV4ZWMpOworICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIEpTVmFsdWUgUmVn
RXhwR2xvYmFsRGF0YTo6Z2V0TGFzdFBhcmVuKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIG93bmVyKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNBcnJheSogYXJyYXkgPSBtX2NhY2hl
ZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwog
ICAgIGlmIChsZW5ndGggPiAxKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZShh
cnJheSkuZ2V0KGV4ZWMsIGxlbmd0aCAtIDEpOwpAQCAtNTYsNyArNjUsNyBAQCBKU1ZhbHVlIFJl
Z0V4cEdsb2JhbERhdGE6OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBvd25lcikKICAgICAgICAgaWYgKCFyZXN1bHQuaXNVbmRlZmluZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMp
OworICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwR2xv
YmFsRGF0YTo6Z2V0TGVmdENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
b3duZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmlu
ZGV4IDhhZWRjYTYzNGM0OGJmZDYzYzEyNTM1NTlhODAwZDJkMzZmOTFmMjguLjZmMmI5MDk3ZWE0
ZGFkZTY1YWMxOTlmMTAwY2RjNzVmYTU3NmM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmln
aW5hbFZhbHVlCiAgICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUo
ZXhlYykgPT0gc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUp
OwogICAgIH0KLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nKTsKKyAgICByZXR1cm4g
anNTdHJpbmcoJmV4ZWMtPnZtKCksIHN0cmluZyk7CiB9CiAKIC8vIEhlbHBlciB0aGF0IHRyaWVz
IHRvIHVzZSB0aGUgSlNTdHJpbmcgc3Vic3RyaW5nIHNoYXJpbmcgbWVjaGFuaXNtIGlmICdvcmln
aW5hbFZhbHVlJyBpcyBhIEpTU3RyaW5nLgpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW5saW5l
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxW
YWx1ZSwgY29ucwogICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVl
KGV4ZWMpID09IHN0cmluZyk7CiAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBhc1N0
cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KLSAgICByZXR1cm4g
anNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIGpz
U3Vic3RyaW5nKCZleGVjLT52bSgpLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAppbmRleCA3YmZiNDM4MTkyODRiMjBiYjBiMzJjMTkzZTg2YjczNTY5
OTE2MzJlLi5kZDBlN2JiYjEwMDRmOThlZDUwNDBmMzBkZGY4Zjg1YzQwYmMwOTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAg
LTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVz
aW5nUmVnRXhwU2VhcmNoKAogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgc291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsKICAgICB1bnNpZ25lZCBz
b3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoKCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwT2JqZWN0Kj4oc2VhcmNoVmFsdWUpOwpAQCAtNjU2LDggKzY1NiwxMCBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAg
IHBhdHRlcm5WYWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5WYWx1ZSA9IGpzU3Vic3RyaW5nKGV4ZWMs
IHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5WYWx1ZSA9IGpzU3Vic3RyaW5nKCZ2
bSwgc291cmNlLCBtYXRjaFN0YXJ0LCBtYXRjaExlbik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHBhdHRlcm5WYWx1ZSk7CiAK
QEAgLTczNSw3ICs3MzcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKAogICAgICAgICAvLyBFUzUuMSAxNS41LjQu
MTAgc3RlcCA4LmEuCiAgICAgICAgIHNlYXJjaFZhbHVlLT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgICAgICBj
b25zdCBTdHJpbmcmIHNvdXJjZSA9IHRoaXNWYWx1ZS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0
cmluZyBzb3VyY2UgPSB0aGlzVmFsdWUtPnZhbHVlKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywgdGhpc1ZhbHVlLCBzb3VyY2Us
IHJlZ0V4cCkpOwogICAgIH0KQEAgLTc3OCw3ICs3ODAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1N0cmluZyogcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjLAogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nID0ganNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzdHJpbmcgPSBqc1N0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVl
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwpAQCAtNzkyLDcgKzc5NCw5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBy
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7
CiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgICAgIGFyZ3MuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMs
IHN0cmluZywgbWF0Y2hTdGFydCwgc2VhcmNoU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpKTsKKyAg
ICAgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoJnZtLCBzdHJpbmcsIG1hdGNoU3Rh
cnQsIHNlYXJjaFN0cmluZy5pbXBsKCktPmxlbmd0aCgpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIGFyZ3MuYXBwZW5kKHN1YnN0cmluZyk7
CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKG1hdGNoU3RhcnQpKTsKICAgICAgICAgYXJn
cy5hcHBlbmQoanNTdHJpbmcpOwogICAgICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKQEAgLTExNTMsOCArMTE1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRvdWJsZSBlbmQgPSBhMS5pc1VuZGVm
aW5lZCgpID8gbGVuIDogYTEudG9JbnRlZ2VyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKGV4ZWMsIFdURk1vdmUocyksIHN0YXJ0
LCBlbmQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKHZtLCBXVEZN
b3ZlKHMpLCBzdGFydCwgZW5kKSk7CiB9CiAKIC8vIFJldHVybiB0cnVlIGluIGNhc2Ugb2YgZWFy
bHkgcmV0dXJuIChyZXN1bHRMZW5ndGggZ290IHRvIGxpbWl0TGVuZ3RoKS4KQEAgLTExNzYsNyAr
MTE3OSw5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU9uZUNoYXJh
Y3RlckltcGwoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5CiAgICAgICAgIC8vICAgIHRocm91Z2gg
cSAoZXhjbHVzaXZlKS4KICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0
eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEp
LAogICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFQsIFtbV3Jp
dGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRy
dWV9LCBhbmQgZmFsc2UuCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVz
dWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCBvcmlnaW5hbFZhbHVlLCBpbnB1dCwgcG9zaXRp
b24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOworICAgICAgICBhdXRvKiBzdWJzdHJpbmcg
PSBqc1N1YnN0cmluZyhleGVjLCBvcmlnaW5hbFZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNo
UG9zaXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5n
dGgsIHN1YnN0cmluZyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgLy8gNC4g
SWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgpAQCAtMTMwMCw4ICsxMzA1LDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFs
IHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBv
c2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1
c2l2ZSkuCiAgICAgICAgICAgICAvLyAyLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0
cmluZyhsZW5ndGhBKSwgVCkuCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9z
aXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgICAgICBhdXRvKiBz
dWJzdHJpbmcgPSBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwg
bWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMs
IHJlc3VsdExlbmd0aCwgc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAx
LgogICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgogICAgICAg
ICAgICAgaWYgKCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQpAQCAtMTMxNiw4ICsxMzIzLDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwg
dG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9z
aXRpb25zIHAgKGluY2x1c2l2ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgog
ICAgIC8vIDE2LiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwg
VCkuCisgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBp
bnB1dCwgcG9zaXRpb24sIGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgrKywgc3Vic3Ry
aW5nKTsKIAogICAgIC8vIDE3LiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0xMzYxLDkgKzEzNzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBsZW5n
dGggPSBsZW4gLSBzdGFydDsKICAgICB1bnNpZ25lZCBzdWJzdHJpbmdTdGFydCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGFydCk7CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlm
IChqc1N0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhl
eGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywgdVN0cmluZywgc3Vic3RyaW5n
U3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dWJzdHJpbmcoJnZtLCB1U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0cklu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0MjEsNyArMTQzMSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB9CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnQpOwogICAgIHVuc2lnbmVkIHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlbmQpIC0gc3Vic3RyaW5nU3RhcnQ7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N1YnN0cmluZyhleGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmlu
Z0xlbmd0aCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3Vic3RyaW5nKGV4ZWMsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVu
Z3RoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0MzQsNyArMTQ0NCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgY29uc3QgU3Ry
aW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1ZShl
eGVjKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvTG93ZXJjYXNl
V2l0aG91dExvY2FsZSgpOwogICAgIGlmIChsb3dlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBzLmlt
cGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKQEAgLTE0NTEsNyAr
MTQ2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9V
cHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgY29uc3QgU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29u
dmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmICh1cHBlcmNhc2VkU3RyaW5n
LmltcGwoKSA9PSBzLmltcGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZUlubGluZXMuaAppbmRleCA0ZDA2MTEzZmRlNTFkMzI5ZGE2MjdmZTdjZmY4NzY4NzFkYzEz
NjE1Li43NWNlOGQxYWM4MjkyODJhYmVlNjk2Mzc5NDYyNzBhZmVkMjU0NDk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlSW5saW5l
cy5oCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgTnVtYmVyVHlwZT4KLUFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHN0cmluZ1NsaWNlKEV4ZWNT
dGF0ZSogZXhlYywgU3RyaW5nJiYgc3RyaW5nLCBOdW1iZXJUeXBlIHN0YXJ0LCBOdW1iZXJUeXBl
IGVuZCkKK0FMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHN0cmluZ1NsaWNlKFZNJiB2bSwgU3RyaW5n
JiYgc3RyaW5nLCBOdW1iZXJUeXBlIHN0YXJ0LCBOdW1iZXJUeXBlIGVuZCkKIHsKICAgICBpbnQz
Ml90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBOdW1iZXJUeXBlIGZyb20gPSBzdGFy
dCA8IDAgPyBsZW5ndGggKyBzdGFydCA6IHN0YXJ0OwpAQCAtNDAsOSArNDAsOSBAQCBBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiBzdHJpbmdTbGljZShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYmIHN0
cmluZywgTnVtYmVyVHlwZQogICAgICAgICAgICAgZnJvbSA9IDA7CiAgICAgICAgIGlmICh0byA+
IGxlbmd0aCkKICAgICAgICAgICAgIHRvID0gbGVuZ3RoOwotICAgICAgICByZXR1cm4ganNTdWJz
dHJpbmcoZXhlYywgV1RGTW92ZShzdHJpbmcpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0bykgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbSkp
OworICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoJnZtLCBXVEZNb3ZlKHN0cmluZyksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmcm9tKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSAtIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmcm9tKSk7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5n
KGV4ZWMpOworICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364898</attachid>
            <date>2019-03-15 18:23:44 -0700</date>
            <delta_ts>2019-03-15 18:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195840-20190315182343.patch</filename>
            <type>text/plain</type>
            <size>26727</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NGRiNzFhOWNmMGNkNDNmMGE5MzM0NTk3YTFhY2YyYjE3YTc5ODVkLi41N2Y5NmM1MzdkZjVlMTkz
NzJmMWIyYjI3YzkzNDY0NDk0YTc4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGpzU3Vic3RyaW5nIHNob3VsZCByZXNvbHZlIHJvcGUgYmVmb3Jl
IGNhbGxpbmcgSlNSb3BlU3RyaW5nOjpjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGpzU3Vic3RyaW5nIGFsd2F5cyBlbmRzIHVwIHJlc29sdmlu
ZyByb3BlIG9mIHRoZSBiYXNlIHN0cmluZyBiZWNhdXNlIHN1YnN0cmluZyBKU1JvcGVTdHJpbmcg
b25seSBhY2NlcHRzIG5vbi1yb3BlIEpTU3RyaW5nCisgICAgICAgIGFzIGl0cyBiYXNlLiBJbnN0
ZWFkIG9mIHJlc29sdmluZyByb3BlcyBpbiBmaW5pc2hDcmVhdGlvblN1YnN0cmluZywgd2Ugc2hv
dWxkIHJlc29sdmUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gSlNSb3BlU3RyaW5nLgorICAgICAgICBT
byB0aGF0LCB3ZSBjYW4gYWNjZXNzIHN0cmluZyBkYXRhIGJlZm9yZSBjcmVhdGluZyBKU1JvcGVT
dHJpbmcsIGFuZCB3ZSBjYW4gaW50cm9kdWNlIG9wdGltaXphdGlvbnMgbGlrZSBhdm9pZGluZyBj
cmVhdGlvbgorICAgICAgICBvZiBzaW5nbGUgY2hhcmFjdGVyIHN1YnN0cmluZ3MuCisKKyAgICAg
ICAgV2UgY2FuIGZpbmQgdGhhdCBhIGxvdCBvZiBzdWJzdHJpbmdzIGZvciBsZW5ndGggPSAxIGFy
ZSBhbGxvY2F0ZWQgaW4gUkFNaWZpY2F0aW9uIHJlZ2V4cCB0ZXN0cy4gVGhpcyBwYXRjaCBhdm9p
ZHMgY3JlYXRpb24gb2YgdGhlc2UKKyAgICAgICAgc3RyaW5ncyB0byBzYXZlIG1lbW9yeS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RyZW5ndGhlbiBlcnJvciBjaGVja3MgY2F1c2VkIGJ5
IHJvcGUgcmVzb2x1dGlvbiBmb3IgYmFzZSBvZiBzdWJzdHJpbmdzLiBQcmV2aW91c2x5IHdlIHNv
bWV0aW1lcyBtaXNzIHRoaXMgY2hlY2tzLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0
cmluZzo6ZHVtcFRvU3RyZWFtKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0M6OmpzU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmdPZlJlc29s
dmVkKToKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2Fj
aGVkUmVzdWx0OjpsYXN0UmVzdWx0KTogV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaGF2ZSBsZW5ndGgg
PSAwIHBhdGggc2luY2UganNTdWJzdHJpbmcgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgbGVu
Z3RoID09IDAuCisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6bGVmdENvbnRleHQp
OgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OnJpZ2h0Q29udGV4dCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6c2V0SW5wdXQpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cEdsb2JhbERhdGE6
OmdldEJhY2tyZWYpOgorICAgICAgICAoSlNDOjpSZWdFeHBHbG9iYWxEYXRhOjpnZXRMYXN0UGFy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ompz
U3RyaW5nV2l0aFJldXNlKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5n
UmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5nU2Vh
cmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlND
OjpzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1NwbGl0RmFzdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cik6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jVG9VcHBlckNhc2UpOgorICAgICAgICBTb21lIGBjb25zdCBTdHJpbmcmIHZhbHVlID0gc3Ry
aW5nLT52YWx1ZShleGVjKWAgaXMgZGFuZ2Vyb3VzIGlmIEdDIGhhcHBlbnMgbGF0ZXIuIENoYW5n
ZWQgdG8gZ2V0dGluZyBgU3RyaW5nYCBpbnN0ZWFkIG9mIGBjb25zdCBTdHJpbmcmYCBoZXJlLgor
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OnN0cmluZ1NsaWNlKToKKwogMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgbW9yZSBwcm9wZXJ0aWVzIGxhemlseS1h
bGxvY2F0ZWQgaW4gSlNHbG9iYWxPYmplY3QsIGluY2x1ZGluZyBwcm9wZXJ0aWVzIG9ubHkgdXNl
ZCBpbiBKSVQgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggN2ZiMjQ2ZThiMWU3N2ZlMDI3MmQ5ODIxNjlkODA0M2QxZWZiMDI5Mi4uNGNmYWMx
ZDRiMmViOWYyMzZlNTk2ZTkzNjAwNjlkMmUyNzliOTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMTY4LDcgKzIxNjgsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBjZWxsLCBpbnQzMgogCiAgICAgYXV0byBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihj
ZWxsKS0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7Ci0gICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgZnJvbSwgc3Bhbik7Cisg
ICAgcmV0dXJuIGpzU3Vic3RyaW5nKCZ2bSwgc3RyaW5nLCBmcm9tLCBzcGFuKTsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1NsaWNlKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBjZWxsLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGVuZCkKQEAgLTIxODEsOCArMjE4
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTbGljZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCwgaW50MzJfCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
SlNTdHJpbmc6Ok1heExlbmd0aCkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKSwgIiIpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBzdHJpbmdTbGljZShleGVjLCBXVEZNb3ZlKHN0cmluZyksIHN0YXJ0LCBlbmQp
OworICAgIHJldHVybiBzdHJpbmdTbGljZSh2bSwgV1RGTW92ZShzdHJpbmcpLCBzdGFydCwgZW5k
KTsKIH0KIAogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dlckNhc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCB1aW50MzJfdCBmYWlsaW5nSW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggYzgzNmZhMmUy
ZGZhOTljNjQ2NzhiMzk2ODY0ZTdjZWM0MmZkYmYzZS4uZGNhZWFkOTdhZDA1NGE3MDhjYTRhM2Fk
OTg1YzAxNWY5NDMxYzk4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcApAQCAtNzUsOSArNzUsMTIgQEAgdm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNv
bnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKICAgICBjb25zdCBKU1N0cmluZyog
dGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1N0cmluZyo+KGNlbGwpOwogICAgIG91dC5wcmlu
dGYoIjwlcCwgJXMsIFsldV0sICIsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNsYXNzTmFtZSh2
bSksIHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKICAgICB1aW50cHRyX3QgcG9pbnRlciA9IHRoaXNP
YmplY3QtPm1fZmliZXI7Ci0gICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpCi0gICAg
ICAgIG91dC5wcmludGYoIltyb3BlXSIpOwotICAgIGVsc2UgeworICAgIGlmIChwb2ludGVyICYg
aXNSb3BlSW5Qb2ludGVyKSB7CisgICAgICAgIGlmIChwb2ludGVyICYgSlNSb3BlU3RyaW5nOjpp
c1N1YnN0cmluZ0luUG9pbnRlcikKKyAgICAgICAgICAgIG91dC5wcmludGYoIltzdWJzdHJpbmdd
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIltyb3BlXSIpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChXVEY6OlN0cmluZ0ltcGwqIG91ckltcGwgPSBiaXR3aXNl
X2Nhc3Q8U3RyaW5nSW1wbCo+KHBvaW50ZXIpKSB7CiAgICAgICAgICAgICBpZiAob3VySW1wbC0+
aXM4Qml0KCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiWzggJXBdIiwgb3VySW1wbC0+
Y2hhcmFjdGVyczgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApp
bmRleCBlMTExZjdlNWUxZTY4YWMyY2ZkM2U5NWNmMmUwZGU2MDVjODI3MWY3Li4yNWU5NTNkOTVk
YTQ3ZGJkMzYyMDY5OTc0ZWIwZWUzOGZmYTIyN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNz
ZWQKIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSosIFVDaGFyKTsKIEpTU3Ry
aW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hhcik7CiBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoVk0qLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7Ci1KU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAvLyBOb24tdHJpdmlh
bCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAvLyBUaGVzZSBmdW5j
dGlvbnMgYXJlIGZhc3RlciB0aGFuIGp1c3QgY2FsbGluZyBqc1N0cmluZy4KQEAgLTUzNiwxNyAr
NTM1LDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
ICAgICAgaW5pdGlhbGl6ZVN1YnN0cmluZ0Jhc2UoYmFzZSk7CiAgICAgICAgIGluaXRpYWxpemVT
dWJzdHJpbmdPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5s
ZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9u
U3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBKU1N0cmluZyogdXBkYXRlZEJhc2UgPSBzdWJz
dHJpbmdCYXNlKCk7Ci0gICAgICAgIC8vIEZvciBub3csIGxldCdzIG5vdCBhbGxvdyBzdWJzdHJp
bmdzIHdpdGggYSByb3BlIGJhc2UuCi0gICAgICAgIC8vIFJlc29sdmUgbm9uLXN1YnN0cmluZyBy
b3BlIGJhc2VzIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIGl0LgotICAgICAgICAvLyBG
SVhNRTogRXZhbHVhdGUgaWYgdGhpcyB3b3VsZCBiZSB3b3J0aCBhZGRpbmcgbW9yZSBicmFuY2hl
cy4KLSAgICAgICAgaWYgKHVwZGF0ZWRCYXNlLT5pc1JvcGUoKSkKLSAgICAgICAgICAgIGpzQ2Fz
dDxKU1JvcGVTdHJpbmcqPih1cGRhdGVkQmFzZSktPnJlc29sdmVSb3BlKGV4ZWMpOworICAgICAg
ICBBU1NFUlQoIWJhc2UtPmlzUm9wZSgpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmluaXNoQ3JlYXRpb25TdWJzdHJpbmdPZlJlc29sdmVkKFZNJiB2bSkKQEAgLTU5NywxNSAr
NTg2LDYgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
ICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNSb3BlU3RyaW5n
KiBjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEpTUm9wZVN0cmluZyog
bmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5nPih2bS5o
ZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIG5l
d1N0cmluZy0+ZmluaXNoQ3JlYXRpb25TdWJzdHJpbmcodm0sIGV4ZWMpOwotICAgICAgICBBU1NF
UlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9w
ZSgpKTsKLSAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1JvcGVTdHJpbmcqIGNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZt
LCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBKU1N0cmluZyogYmFzZSwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBKU1JvcGVTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4o
dm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0KSkgSlNSb3BlU3RyaW5nKFN1YnN0cmluZ09mUmVzb2x2
ZWQsIHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CkBAIC04NTAsMTYgKzgzMCwzMSBAQCBpbmxp
bmUgSlNTdHJpbmcqIGpzU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVy
biBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgKnMuaW1wbCgpKTsKIH0KIAotaW5saW5lIEpTU3RyaW5n
KiBqc1N1YnN0cmluZyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoraW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmlu
ZyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIEFTU0VSVChvZmZzZXQgPD0gcy0+bGVuZ3RoKCkp
OwotICAgIEFTU0VSVChsZW5ndGggPD0gcy0+bGVuZ3RoKCkpOwotICAgIEFTU0VSVChvZmZzZXQg
KyBsZW5ndGggPD0gcy0+bGVuZ3RoKCkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEFTU0VSVChvZmZzZXQgPD0gYmFzZS0+bGVuZ3RoKCkpOworICAg
IEFTU0VSVChsZW5ndGggPD0gYmFzZS0+bGVuZ3RoKCkpOworICAgIEFTU0VSVChvZmZzZXQgKyBs
ZW5ndGggPD0gYmFzZS0+bGVuZ3RoKCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7Ci0gICAgaWYgKCFvZmZzZXQgJiYgbGVu
Z3RoID09IHMtPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gczsKLSAgICByZXR1cm4gSlNSb3Bl
U3RyaW5nOjpjcmVhdGUodm0sIGV4ZWMsIHMsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICBpZiAoIW9m
ZnNldCAmJiBsZW5ndGggPT0gYmFzZS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBiYXNlOwor
CisgICAgLy8gRm9yIG5vdywgbGV0J3Mgbm90IGFsbG93IHN1YnN0cmluZ3Mgd2l0aCBhIHJvcGUg
YmFzZS4KKyAgICAvLyBSZXNvbHZlIG5vbi1zdWJzdHJpbmcgcm9wZSBiYXNlcyBzbyB3ZSBkb24n
dCBoYXZlIHRvIGRlYWwgd2l0aCBpdC4KKyAgICAvLyBGSVhNRTogRXZhbHVhdGUgaWYgdGhpcyB3
b3VsZCBiZSB3b3J0aCBhZGRpbmcgbW9yZSBicmFuY2hlcy4KKyAgICBpZiAoYmFzZS0+aXNTdWJz
dHJpbmcoKSkgeworICAgICAgICBKU1JvcGVTdHJpbmcqIGJhc2VSb3BlID0ganNDYXN0PEpTUm9w
ZVN0cmluZyo+KGJhc2UpOworICAgICAgICBiYXNlID0gYmFzZVJvcGUtPnN1YnN0cmluZ0Jhc2Uo
KTsKKyAgICAgICAgb2Zmc2V0ID0gYmFzZVJvcGUtPnN1YnN0cmluZ09mZnNldCgpICsgb2Zmc2V0
OworICAgICAgICBBU1NFUlQoIWJhc2UtPmlzUm9wZSgpKTsKKyAgICB9IGVsc2UgaWYgKGJhc2Ut
PmlzUm9wZSgpKSB7CisgICAgICAgIGpzQ2FzdDxKU1JvcGVTdHJpbmcqPihiYXNlKS0+cmVzb2x2
ZVJvcGUoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OworICAgIH0KKyAgICByZXR1cm4ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBudWxscHRyLCBi
YXNlLCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmdP
ZlJlc29sdmVkKFZNJiB2bSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgSlNT
dHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtODY3LDEwICs4
NjIsMTcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZtLCBH
Q0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXgKICAgICBBU1NFUlQob2Zmc2V0IDw9IHMt
Pmxlbmd0aCgpKTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IHMtPmxlbmd0aCgpKTsKICAgICBBU1NF
UlQob2Zmc2V0ICsgbGVuZ3RoIDw9IHMtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoIXMtPmlzUm9w
ZSgpKTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5l
bXB0eVN0cmluZygpOwogICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0aCA9PSBzLT5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIHM7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIGF1dG8m
IGJhc2UgPSBzLT52YWx1ZUludGVybmFsKCk7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IGJh
c2UuY2hhcmFjdGVyQXQob2Zmc2V0KTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA8PSBtYXhTaW5n
bGVDaGFyYWN0ZXJTdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhjaGFyYWN0ZXIpOworICAgIH0KICAgICByZXR1cm4gSlNSb3Bl
U3RyaW5nOjpjcmVhdGVTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBkZWZlcnJhbENvbnRleHQsIHMs
IG9mZnNldCwgbGVuZ3RoKTsKIH0KIApAQCAtOTE4LDcgKzkyMCw2IEBAIGlubGluZSBKU1N0cmlu
ZyoganNPd25lZFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKIGlubGluZSBKU1N0cmlu
ZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGpzRW1wdHlTdHJpbmco
JmV4ZWMtPnZtKCkpOyB9CiBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc1N0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0K
IGlubGluZSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBVQ2hhciBjKSB7IHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmZXhlYy0+dm0oKSwg
Yyk7IH0KLWlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBq
c1N1YnN0cmluZygmZXhlYy0+dm0oKSwgcywgb2Zmc2V0LCBsZW5ndGgpOyB9CiBpbmxpbmUgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogaW5saW5l
IEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmJiBz
KSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIFdURk1vdmUocykpOyB9
CiBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNw
cAppbmRleCA5ZTEwMGQyNDAzYzU0ZGE2MTFiMzBhODhjMWI4OTczNTZjZTk5N2FhLi5hNjEwNTA5
Yjc2ZmYzNmFlM2EwODg1MWMwODkwY2I4NTIxZDlmNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAKQEAgLTQ2LDE0ICs0
NiwyMSBAQCB2b2lkIFJlZ0V4cENhY2hlZFJlc3VsdDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiBKU0FycmF5KiBSZWdFeHBDYWNoZWRSZXN1bHQ6Omxhc3RSZXN1bHQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogb3duZXIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IW1fcmVpZmllZCkgewogICAgICAgICBtX3JlaWZpZWRJbnB1dC5zZXQodm0sIG93bmVyLCBtX2xh
c3RJbnB1dC5nZXQoKSk7CiAgICAgICAgIGlmICghbV9sYXN0UmVnRXhwKQogICAgICAgICAgICAg
bV9sYXN0UmVnRXhwLnNldCh2bSwgb3duZXIsIHZtLnJlZ0V4cENhY2hlKCktPmVuc3VyZUVtcHR5
UmVnRXhwKHZtKSk7CisKKyAgICAgICAgSlNBcnJheSogcmVzdWx0ID0gbnVsbHB0cjsKICAgICAg
ICAgaWYgKG1fcmVzdWx0KQotICAgICAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9y
ZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNB
cnJheShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fbGFzdElucHV0LmdldCgp
LCBtX2xhc3RSZWdFeHAuZ2V0KCksIG1fcmVzdWx0LnN0YXJ0KTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY3JlYXRlRW1w
dHlSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJ
bnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBj
cmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCkpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgICAgICBtX3JlaWZpZWRSZXN1bHQu
c2V0V2l0aG91dFdyaXRlQmFycmllcihyZXN1bHQpOwogICAgICAgICBtX3JlaWZpZWRMZWZ0Q29u
dGV4dC5jbGVhcigpOwogICAgICAgICBtX3JlaWZpZWRSaWdodENvbnRleHQuY2xlYXIoKTsKICAg
ICAgICAgbV9yZWlmaWVkID0gdHJ1ZTsKQEAgLTY1LDE5ICs3MiwzNCBAQCBKU0FycmF5KiBSZWdF
eHBDYWNoZWRSZXN1bHQ6Omxhc3RSZXN1bHQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3du
ZXIpCiBKU1N0cmluZyogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsZWZ0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKIHsKICAgICAvLyBNYWtlIHN1cmUgd2UncmUgcmVpZmll
ZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGxhc3RSZXN1bHQoZXhlYywgb3duZXIpOwotICAgIGlmICgh
bV9yZWlmaWVkTGVmdENvbnRleHQpCi0gICAgICAgIG1fcmVpZmllZExlZnRDb250ZXh0LnNldChl
eGVjLT52bSgpLCBvd25lciwgbV9yZXN1bHQuc3RhcnQgPyBqc1N1YnN0cmluZyhleGVjLCBtX3Jl
aWZpZWRJbnB1dC5nZXQoKSwgMCwgbV9yZXN1bHQuc3RhcnQpIDoganNFbXB0eVN0cmluZyhleGVj
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBpZiAo
IW1fcmVpZmllZExlZnRDb250ZXh0KSB7CisgICAgICAgIEpTU3RyaW5nKiBsZWZ0Q29udGV4dCA9
IGpzU3Vic3RyaW5nKGV4ZWMsIG1fcmVpZmllZElucHV0LmdldCgpLCAwLCBtX3Jlc3VsdC5zdGFy
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAg
ICBtX3JlaWZpZWRMZWZ0Q29udGV4dC5zZXQodm0sIG93bmVyLCBsZWZ0Q29udGV4dCk7CisgICAg
fQogICAgIHJldHVybiBtX3JlaWZpZWRMZWZ0Q29udGV4dC5nZXQoKTsKIH0KIAogSlNTdHJpbmcq
IFJlZ0V4cENhY2hlZFJlc3VsdDo6cmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG93bmVyKQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSByZWlmaWVkLgorICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgbGFzdFJlc3VsdChleGVjLCBvd25lcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisKICAgICBpZiAoIW1fcmVpZmllZFJpZ2h0Q29udGV4dCkgewog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3JlaWZpZWRJbnB1dC0+bGVuZ3RoKCk7Ci0gICAg
ICAgIG1fcmVpZmllZFJpZ2h0Q29udGV4dC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIG1fcmVzdWx0
LmVuZCAhPSBsZW5ndGggPyBqc1N1YnN0cmluZyhleGVjLCBtX3JlaWZpZWRJbnB1dC5nZXQoKSwg
bV9yZXN1bHQuZW5kLCBsZW5ndGggLSBtX3Jlc3VsdC5lbmQpIDoganNFbXB0eVN0cmluZyhleGVj
KSk7CisgICAgICAgIEpTU3RyaW5nKiByaWdodENvbnRleHQgPSBqc1N1YnN0cmluZyhleGVjLCBt
X3JlaWZpZWRJbnB1dC5nZXQoKSwgbV9yZXN1bHQuZW5kLCBsZW5ndGggLSBtX3Jlc3VsdC5lbmQp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAg
bV9yZWlmaWVkUmlnaHRDb250ZXh0LnNldCh2bSwgb3duZXIsIHJpZ2h0Q29udGV4dCk7CiAgICAg
fQogICAgIHJldHVybiBtX3JlaWZpZWRSaWdodENvbnRleHQuZ2V0KCk7CiB9CkBAIC04NSwxMSAr
MTA3LDE3IEBAIEpTU3RyaW5nKiBSZWdFeHBDYWNoZWRSZXN1bHQ6OnJpZ2h0Q29udGV4dChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKIHZvaWQgUmVnRXhwQ2FjaGVkUmVzdWx0Ojpz
ZXRJbnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lciwgSlNTdHJpbmcqIGlucHV0
KQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSByZWlmaWVkLCBvdGhlcndpc2UgbV9yZWlmaWVk
SW5wdXQgd2lsbCBiZSBpZ25vcmVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgbGFzdFJlc3VsdChleGVj
LCBvd25lcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBs
ZWZ0Q29udGV4dChleGVjLCBvd25lcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICByaWdodENvbnRleHQoZXhlYywgb3duZXIpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgQVNTRVJUKG1fcmVpZmllZCk7Ci0gICAgbV9y
ZWlmaWVkSW5wdXQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBpbnB1dCk7CisgICAgbV9yZWlmaWVk
SW5wdXQuc2V0KHZtLCBvd25lciwgaW5wdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEdsb2JhbERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwR2xvYmFsRGF0YS5jcHAK
aW5kZXggYzM2ZGFmMmY1MTk4NzRlZDMxMjU2ZmVhY2Y3Y2Q1OGZmYzZjODhlZC4uOWNiZjRhN2Rk
ZTZhNDMwOTA5MmM1ZWQ0OTVmNmY0YjIzYWIzZDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwR2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDExIEBA
IHZvaWQgUmVnRXhwR2xvYmFsRGF0YTo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAKIEpTVmFsdWUgUmVnRXhwR2xvYmFsRGF0YTo6Z2V0QmFja3JlZihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBvd25lciwgdW5zaWduZWQgaSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTQXJyYXkqIGFycmF5ID0gbV9jYWNoZWRSZXN1bHQubGFzdFJlc3VsdChleGVjLCBvd25l
cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChpIDwg
YXJyYXktPmxlbmd0aCgpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZShhcnJh
eSkuZ2V0KGV4ZWMsIGkpOwpAQCAtNDMsMTIgKzQ3LDE3IEBAIEpTVmFsdWUgUmVnRXhwR2xvYmFs
RGF0YTo6Z2V0QmFja3JlZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBvd25lciwg
dW5zCiAgICAgICAgIGlmICghcmVzdWx0LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLSAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICBy
ZXR1cm4ganNFbXB0eVN0cmluZygmdm0pOwogfQogCiBKU1ZhbHVlIFJlZ0V4cEdsb2JhbERhdGE6
OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBvd25lcikKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIGFycmF5ID0gbV9jYWNoZWRSZXN1bHQubGFzdFJl
c3VsdChleGVjLCBvd25lcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKICAgICBpZiAobGVuZ3Ro
ID4gMSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWUoYXJyYXkpLmdldChleGVj
LCBsZW5ndGggLSAxKTsKQEAgLTU2LDcgKzY1LDcgQEAgSlNWYWx1ZSBSZWdFeHBHbG9iYWxEYXRh
OjpnZXRMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogb3duZXIpCiAg
ICAgICAgIGlmICghcmVzdWx0LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KLSAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICByZXR1cm4g
anNFbXB0eVN0cmluZygmdm0pOwogfQogCiBKU1ZhbHVlIFJlZ0V4cEdsb2JhbERhdGE6OmdldExl
ZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIG93bmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCA4YWVkY2E2MzRj
NDhiZmQ2M2MxMjUzNTU5YTgwMGQyZDM2ZjkxZjI4Li42ZjJiOTA5N2VhNGRhZGU2NWFjMTk5ZjEw
MGNkYzc1ZmE1NzZjOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0
cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZQogICAg
ICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmlu
Zyk7CiAgICAgICAgIHJldHVybiBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKTsKICAgICB9Ci0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVj
LT52bSgpLCBzdHJpbmcpOwogfQogCiAvLyBIZWxwZXIgdGhhdCB0cmllcyB0byB1c2UgdGhlIEpT
U3RyaW5nIHN1YnN0cmluZyBzaGFyaW5nIG1lY2hhbmlzbSBpZiAnb3JpZ2luYWxWYWx1ZScgaXMg
YSBKU1N0cmluZy4KQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnMKICAg
ICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJp
bmcpOwogICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgYXNTdHJpbmcob3JpZ2luYWxW
YWx1ZSksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9Ci0gICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4
ZWMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOworICAgIHJldHVybiBqc1N1YnN0cmluZygmZXhl
Yy0+dm0oKSwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKaW5kZXggN2JmYjQzODE5Mjg0YjIwYmIwYjMyYzE5M2U4NmI3MzU2OTkxNjMyZS4uZGQwZTdi
YmIxMDA0Zjk4ZWQ1MDQwZjMwZGRmOGY4NWM0MGJjMDk3YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC01MjcsNyArNTI3LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJj
aCgKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBj
b25zdCBTdHJpbmcmIHNvdXJjZSA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNv
dXJjZSA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgdW5zaWduZWQgc291cmNlTGVuID0gc291
cmNlLmxlbmd0aCgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwog
ICAgIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KHNl
YXJjaFZhbHVlKTsKQEAgLTY1Niw4ICs2NTYsMTAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNT
dHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKIAogICAgICAgICAgICAgICAgICAgICBp
ZiAobWF0Y2hTdGFydCA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXR0ZXJuVmFsdWUgPSBqc1N1YnN0cmluZyhleGVjLCBzb3VyY2UsIG1hdGNo
U3RhcnQsIG1hdGNoTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYXR0ZXJuVmFsdWUgPSBqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0
Y2hTdGFydCwgbWF0Y2hMZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgICAgICBhcmdzLmFwcGVuZChwYXR0ZXJuVmFsdWUpOwogCkBAIC03MzUsNyArNzM3
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBFbXB0eVN0cigKICAgICAgICAgLy8gRVM1LjEgMTUuNS40LjEwIHN0ZXAgOC5hLgog
ICAgICAgICBzZWFyY2hWYWx1ZS0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBz
b3VyY2UgPSB0aGlzVmFsdWUtPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgc291cmNlID0g
dGhpc1ZhbHVlLT52YWx1ZShleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVtb3ZlVXNp
bmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHRoaXNWYWx1ZSwgc291cmNlLCByZWdFeHApKTsKICAg
ICB9CkBAIC03NzgsNyArNzgwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJl
cGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCBTdHJpbmcm
IHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0ganNT
dHJpbmctPnZhbHVlKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBzZWFyY2hWYWx1ZS50b1dURlN0cmluZyhl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTc5Miw3
ICs3OTQsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nU3Ry
aW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLAogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwotICAgICAgICBhcmdzLmFwcGVuZChqc1N1YnN0cmluZyhleGVjLCBzdHJpbmcsIG1hdGNo
U3RhcnQsIHNlYXJjaFN0cmluZy5pbXBsKCktPmxlbmd0aCgpKSk7CisgICAgICAgIGF1dG8qIHN1
YnN0cmluZyA9IGpzU3Vic3RyaW5nKCZ2bSwgc3RyaW5nLCBtYXRjaFN0YXJ0LCBzZWFyY2hTdHJp
bmcuaW1wbCgpLT5sZW5ndGgoKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworICAgICAgICBhcmdzLmFwcGVuZChzdWJzdHJpbmcpOwogICAgICAgICBhcmdz
LmFwcGVuZChqc051bWJlcihtYXRjaFN0YXJ0KSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3Ry
aW5nKTsKICAgICAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0xMTUzLDgg
KzExNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Ns
aWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBkb3VibGUgZW5kID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6
IGExLnRvSW50ZWdlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzdHJpbmdTbGljZShleGVjLCBXVEZNb3ZlKHMpLCBzdGFydCwgZW5kKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdTbGljZSh2bSwgV1RGTW92ZShzKSwgc3RhcnQs
IGVuZCkpOwogfQogCiAvLyBSZXR1cm4gdHJ1ZSBpbiBjYXNlIG9mIGVhcmx5IHJldHVybiAocmVz
dWx0TGVuZ3RoIGdvdCB0byBsaW1pdExlbmd0aCkuCkBAIC0xMTc2LDcgKzExNzksOSBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsKEV4ZWNT
dGF0ZSogZXhlYywgSlNBcnJheQogICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSku
CiAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhBKSwKICAgICAgICAgLy8g
ICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06IHRydWUs
IFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNl
LgotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNT
dWJzdHJpbmcoZXhlYywgb3JpZ2luYWxWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0
aW9uIC0gcG9zaXRpb24pKTsKKyAgICAgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmco
ZXhlYywgb3JpZ2luYWxWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9z
aXRpb24pOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBzdWJzdHJpbmcp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIC8v
IDMuIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCiAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0g
bGltLCByZXR1cm4gQS4KQEAgLTEzMDAsOCArMTMwNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3Ry
aW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5j
bHVzaXZlKQogICAgICAgICAgICAgLy8gICAgdGhyb3VnaCBxIChleGNsdXNpdmUpLgogICAgICAg
ICAgICAgLy8gMi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSks
IFQpLgotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5n
dGgsIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBv
c2l0aW9uIC0gcG9zaXRpb24pKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgICAgICAgICAgYXV0byogc3Vic3RyaW5nID0ganNT
dWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24g
LSBwb3NpdGlvbik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgs
IHN1YnN0cmluZyk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgICAg
IC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KICAgICAgICAgICAgIGlmICgrK3Jl
c3VsdExlbmd0aCA9PSBsaW1pdCkKQEAgLTEzMTYsOCArMTMyMywxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgLy8gMTUuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJp
bmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNs
dXNpdmUpCiAgICAgLy8gICAgIHRocm91Z2ggcyAoZXhjbHVzaXZlKS4KICAgICAvLyAxNi4gQ2Fs
bCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgorICAgIGF1dG8q
IHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9u
LCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlu
cHV0LCBwb3NpdGlvbiwgaW5wdXQubGVuZ3RoKCkgLSBwb3NpdGlvbikpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIHN1YnN0cmluZyk7CiAKICAgICAv
LyAxNy4gUmV0dXJuIEEuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTM2MSw5ICsxMzcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgbGVuZ3RoID0gbGVuIC0gc3Rh
cnQ7CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RhcnQpOwogICAgIHVuc2lnbmVkIHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsZW5ndGgpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBpZiAoanNTdHJpbmcpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywganNTdHJpbmcs
IHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIHVTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJp
bmdMZW5ndGgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKCZ2bSwg
dVN0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC0xNDIxLDcgKzE0MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogICAg
IHVuc2lnbmVkIHN1YnN0cmluZ1N0YXJ0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsK
ICAgICB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5k
KSAtIHN1YnN0cmluZ1N0YXJ0OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJp
bmcoZXhlYywganNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhl
eGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDM0LDcgKzE0NDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5n
KiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGNvbnN0IFN0cmluZyYgcyA9IHNWYWwt
PnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CiAgICAgU3Ry
aW5nIGxvd2VyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUo
KTsKICAgICBpZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7CkBAIC0xNDUxLDcgKzE0NjEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGNvbnN0IFN0
cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUo
ZXhlYyk7CiAgICAgU3RyaW5nIHVwcGVyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb1VwcGVyY2Fz
ZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAodXBwZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5p
bXBsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmgK
aW5kZXggNGQwNjExM2ZkZTUxZDMyOWRhNjI3ZmU3Y2ZmODc2ODcxZGMxMzYxNS4uNzVjZThkMWFj
ODI5MjgyYWJlZTY5NjM3OTQ2MjcwYWZlZDI1NDQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZUlubGluZXMuaApAQCAtMzAsNyAr
MzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+
Ci1BTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBzdHJpbmdTbGljZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cmluZyYmIHN0cmluZywgTnVtYmVyVHlwZSBzdGFydCwgTnVtYmVyVHlwZSBlbmQpCitBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiBzdHJpbmdTbGljZShWTSYgdm0sIFN0cmluZyYmIHN0cmluZywgTnVt
YmVyVHlwZSBzdGFydCwgTnVtYmVyVHlwZSBlbmQpCiB7CiAgICAgaW50MzJfdCBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoKCk7CiAgICAgTnVtYmVyVHlwZSBmcm9tID0gc3RhcnQgPCAwID8gbGVuZ3Ro
ICsgc3RhcnQgOiBzdGFydDsKQEAgLTQwLDkgKzQwLDkgQEAgQUxXQVlTX0lOTElORSBKU1N0cmlu
Zyogc3RyaW5nU2xpY2UoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmJiBzdHJpbmcsIE51bWJlclR5
cGUKICAgICAgICAgICAgIGZyb20gPSAwOwogICAgICAgICBpZiAodG8gPiBsZW5ndGgpCiAgICAg
ICAgICAgICB0byA9IGxlbmd0aDsKLSAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIFdU
Rk1vdmUoc3RyaW5nKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb20pLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odG8pIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb20pKTsKKyAgICAgICAgcmV0
dXJuIGpzU3Vic3RyaW5nKCZ2bSwgV1RGTW92ZShzdHJpbmcpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZnJvbSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0bykgLSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZnJvbSkpOwogICAgIH0KLSAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICBy
ZXR1cm4ganNFbXB0eVN0cmluZygmdm0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364899</attachid>
            <date>2019-03-15 18:27:06 -0700</date>
            <delta_ts>2019-03-16 13:59:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195840-20190315182705.patch</filename>
            <type>text/plain</type>
            <size>28154</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NGRiNzFhOWNmMGNkNDNmMGE5MzM0NTk3YTFhY2YyYjE3YTc5ODVkLi41N2Y5NmM1MzdkZjVlMTkz
NzJmMWIyYjI3YzkzNDY0NDk0YTc4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGpzU3Vic3RyaW5nIHNob3VsZCByZXNvbHZlIHJvcGUgYmVmb3Jl
IGNhbGxpbmcgSlNSb3BlU3RyaW5nOjpjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGpzU3Vic3RyaW5nIGFsd2F5cyBlbmRzIHVwIHJlc29sdmlu
ZyByb3BlIG9mIHRoZSBiYXNlIHN0cmluZyBiZWNhdXNlIHN1YnN0cmluZyBKU1JvcGVTdHJpbmcg
b25seSBhY2NlcHRzIG5vbi1yb3BlIEpTU3RyaW5nCisgICAgICAgIGFzIGl0cyBiYXNlLiBJbnN0
ZWFkIG9mIHJlc29sdmluZyByb3BlcyBpbiBmaW5pc2hDcmVhdGlvblN1YnN0cmluZywgd2Ugc2hv
dWxkIHJlc29sdmUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gSlNSb3BlU3RyaW5nLgorICAgICAgICBT
byB0aGF0LCB3ZSBjYW4gYWNjZXNzIHN0cmluZyBkYXRhIGJlZm9yZSBjcmVhdGluZyBKU1JvcGVT
dHJpbmcsIGFuZCB3ZSBjYW4gaW50cm9kdWNlIG9wdGltaXphdGlvbnMgbGlrZSBhdm9pZGluZyBj
cmVhdGlvbgorICAgICAgICBvZiBzaW5nbGUgY2hhcmFjdGVyIHN1YnN0cmluZ3MuCisKKyAgICAg
ICAgV2UgY2FuIGZpbmQgdGhhdCBhIGxvdCBvZiBzdWJzdHJpbmdzIGZvciBsZW5ndGggPSAxIGFy
ZSBhbGxvY2F0ZWQgaW4gUkFNaWZpY2F0aW9uIHJlZ2V4cCB0ZXN0cy4gVGhpcyBwYXRjaCBhdm9p
ZHMgY3JlYXRpb24gb2YgdGhlc2UKKyAgICAgICAgc3RyaW5ncyB0byBzYXZlIG1lbW9yeS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RyZW5ndGhlbiBlcnJvciBjaGVja3MgY2F1c2VkIGJ5
IHJvcGUgcmVzb2x1dGlvbiBmb3IgYmFzZSBvZiBzdWJzdHJpbmdzLiBQcmV2aW91c2x5IHdlIHNv
bWV0aW1lcyBtaXNzIHRoaXMgY2hlY2tzLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0
cmluZzo6ZHVtcFRvU3RyZWFtKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0M6OmpzU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmdPZlJlc29s
dmVkKToKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2Fj
aGVkUmVzdWx0OjpsYXN0UmVzdWx0KTogV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaGF2ZSBsZW5ndGgg
PSAwIHBhdGggc2luY2UganNTdWJzdHJpbmcgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgbGVu
Z3RoID09IDAuCisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6bGVmdENvbnRleHQp
OgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OnJpZ2h0Q29udGV4dCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6c2V0SW5wdXQpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cEdsb2JhbERhdGE6
OmdldEJhY2tyZWYpOgorICAgICAgICAoSlNDOjpSZWdFeHBHbG9iYWxEYXRhOjpnZXRMYXN0UGFy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ompz
U3RyaW5nV2l0aFJldXNlKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5n
UmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5nU2Vh
cmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlND
OjpzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1NwbGl0RmFzdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cik6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jVG9VcHBlckNhc2UpOgorICAgICAgICBTb21lIGBjb25zdCBTdHJpbmcmIHZhbHVlID0gc3Ry
aW5nLT52YWx1ZShleGVjKWAgaXMgZGFuZ2Vyb3VzIGlmIEdDIGhhcHBlbnMgbGF0ZXIuIENoYW5n
ZWQgdG8gZ2V0dGluZyBgU3RyaW5nYCBpbnN0ZWFkIG9mIGBjb25zdCBTdHJpbmcmYCBoZXJlLgor
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OnN0cmluZ1NsaWNlKToKKwogMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgbW9yZSBwcm9wZXJ0aWVzIGxhemlseS1h
bGxvY2F0ZWQgaW4gSlNHbG9iYWxPYmplY3QsIGluY2x1ZGluZyBwcm9wZXJ0aWVzIG9ubHkgdXNl
ZCBpbiBKSVQgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggN2ZiMjQ2ZThiMWU3N2ZlMDI3MmQ5ODIxNjlkODA0M2QxZWZiMDI5Mi4uNGNmYWMx
ZDRiMmViOWYyMzZlNTk2ZTkzNjAwNjlkMmUyNzliOTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMTY4LDcgKzIxNjgsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBjZWxsLCBpbnQzMgogCiAgICAgYXV0byBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihj
ZWxsKS0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7Ci0gICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgZnJvbSwgc3Bhbik7Cisg
ICAgcmV0dXJuIGpzU3Vic3RyaW5nKCZ2bSwgc3RyaW5nLCBmcm9tLCBzcGFuKTsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1NsaWNlKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBjZWxsLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGVuZCkKQEAgLTIxODEsOCArMjE4
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTbGljZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCwgaW50MzJfCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
SlNTdHJpbmc6Ok1heExlbmd0aCkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKSwgIiIpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBzdHJpbmdTbGljZShleGVjLCBXVEZNb3ZlKHN0cmluZyksIHN0YXJ0LCBlbmQp
OworICAgIHJldHVybiBzdHJpbmdTbGljZSh2bSwgV1RGTW92ZShzdHJpbmcpLCBzdGFydCwgZW5k
KTsKIH0KIAogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dlckNhc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCB1aW50MzJfdCBmYWlsaW5nSW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggYzgzNmZhMmUy
ZGZhOTljNjQ2NzhiMzk2ODY0ZTdjZWM0MmZkYmYzZS4uZGNhZWFkOTdhZDA1NGE3MDhjYTRhM2Fk
OTg1YzAxNWY5NDMxYzk4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcApAQCAtNzUsOSArNzUsMTIgQEAgdm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNv
bnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKICAgICBjb25zdCBKU1N0cmluZyog
dGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1N0cmluZyo+KGNlbGwpOwogICAgIG91dC5wcmlu
dGYoIjwlcCwgJXMsIFsldV0sICIsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNsYXNzTmFtZSh2
bSksIHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKICAgICB1aW50cHRyX3QgcG9pbnRlciA9IHRoaXNP
YmplY3QtPm1fZmliZXI7Ci0gICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpCi0gICAg
ICAgIG91dC5wcmludGYoIltyb3BlXSIpOwotICAgIGVsc2UgeworICAgIGlmIChwb2ludGVyICYg
aXNSb3BlSW5Qb2ludGVyKSB7CisgICAgICAgIGlmIChwb2ludGVyICYgSlNSb3BlU3RyaW5nOjpp
c1N1YnN0cmluZ0luUG9pbnRlcikKKyAgICAgICAgICAgIG91dC5wcmludGYoIltzdWJzdHJpbmdd
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIltyb3BlXSIpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChXVEY6OlN0cmluZ0ltcGwqIG91ckltcGwgPSBiaXR3aXNl
X2Nhc3Q8U3RyaW5nSW1wbCo+KHBvaW50ZXIpKSB7CiAgICAgICAgICAgICBpZiAob3VySW1wbC0+
aXM4Qml0KCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiWzggJXBdIiwgb3VySW1wbC0+
Y2hhcmFjdGVyczgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApp
bmRleCBlMTExZjdlNWUxZTY4YWMyY2ZkM2U5NWNmMmUwZGU2MDVjODI3MWY3Li5hYmQ5ODNmYmM3
ODkxMTI2MzNmZjMyYmFiN2I5OTFmMGU2NzUzZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNz
ZWQKIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSosIFVDaGFyKTsKIEpTU3Ry
aW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hhcik7CiBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoVk0qLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7Ci1KU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAvLyBOb24tdHJpdmlh
bCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAvLyBUaGVzZSBmdW5j
dGlvbnMgYXJlIGZhc3RlciB0aGFuIGp1c3QgY2FsbGluZyBqc1N0cmluZy4KQEAgLTUwNywyNiAr
NTA2LDYgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKIAog
ICAgIEpTUm9wZVN0cmluZyhWTSYgdm0sIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgOiBKU1N0cmluZyh2bSkKLSAgICB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFzdW1PdmVyZmxvd3M8aW50MzJfdD4ob2Zmc2V0LCBsZW5ndGgpKTsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ICsgbGVuZ3RoIDw9IGJhc2UtPmxlbmd0aCgp
KTsKLSAgICAgICAgaW5pdGlhbGl6ZUlzU3Vic3RyaW5nKHRydWUpOwotICAgICAgICBpbml0aWFs
aXplTGVuZ3RoKGxlbmd0aCk7Ci0gICAgICAgIGluaXRpYWxpemVJczhCaXQoYmFzZS0+aXM4Qml0
KCkpOwotICAgICAgICBpZiAoYmFzZS0+aXNTdWJzdHJpbmcoKSkgewotICAgICAgICAgICAgSlNS
b3BlU3RyaW5nKiBiYXNlUm9wZSA9IGpzQ2FzdDxKU1JvcGVTdHJpbmcqPihiYXNlKTsKLSAgICAg
ICAgICAgIGluaXRpYWxpemVTdWJzdHJpbmdCYXNlKGJhc2VSb3BlLT5zdWJzdHJpbmdCYXNlKCkp
OwotICAgICAgICAgICAgaW5pdGlhbGl6ZVN1YnN0cmluZ09mZnNldChiYXNlUm9wZS0+c3Vic3Ry
aW5nT2Zmc2V0KCkgKyBvZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5p
dGlhbGl6ZVN1YnN0cmluZ0Jhc2UoYmFzZSk7Ci0gICAgICAgICAgICBpbml0aWFsaXplU3Vic3Ry
aW5nT2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGxlbmd0aCA9PSB0
aGlzLT5sZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgZW51bSBTdWJzdHJpbmdPZlJlc29sdmVkVGFn
IHsgU3Vic3RyaW5nT2ZSZXNvbHZlZCB9OwotICAgIEpTUm9wZVN0cmluZyhTdWJzdHJpbmdPZlJl
c29sdmVkVGFnLCBWTSYgdm0sIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKLSAgICAgICAgOiBKU1N0cmluZyh2bSkKICAgICB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFzdW1PdmVyZmxvd3M8aW50MzJfdD4ob2Zmc2V0LCBsZW5ndGgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ICsgbGVuZ3RoIDw9IGJhc2UtPmxlbmd0aCgpKTsKQEAg
LTUzNiwxNyArNTE1LDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3Ry
aW5nIHsKICAgICAgICAgaW5pdGlhbGl6ZVN1YnN0cmluZ0Jhc2UoYmFzZSk7CiAgICAgICAgIGlu
aXRpYWxpemVTdWJzdHJpbmdPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA9
PSB0aGlzLT5sZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmlz
aENyZWF0aW9uU3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBKU1N0cmluZyogdXBkYXRlZEJh
c2UgPSBzdWJzdHJpbmdCYXNlKCk7Ci0gICAgICAgIC8vIEZvciBub3csIGxldCdzIG5vdCBhbGxv
dyBzdWJzdHJpbmdzIHdpdGggYSByb3BlIGJhc2UuCi0gICAgICAgIC8vIFJlc29sdmUgbm9uLXN1
YnN0cmluZyByb3BlIGJhc2VzIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIGl0LgotICAg
ICAgICAvLyBGSVhNRTogRXZhbHVhdGUgaWYgdGhpcyB3b3VsZCBiZSB3b3J0aCBhZGRpbmcgbW9y
ZSBicmFuY2hlcy4KLSAgICAgICAgaWYgKHVwZGF0ZWRCYXNlLT5pc1JvcGUoKSkKLSAgICAgICAg
ICAgIGpzQ2FzdDxKU1JvcGVTdHJpbmcqPih1cGRhdGVkQmFzZSktPnJlc29sdmVSb3BlKGV4ZWMp
OworICAgICAgICBBU1NFUlQoIWJhc2UtPmlzUm9wZSgpKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb25TdWJzdHJpbmdPZlJlc29sdmVkKFZNJiB2bSkKQEAg
LTU5NywxOCArNTY2LDkgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3Ry
aW5nIHsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNS
b3BlU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBiYXNl
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEpTUm9w
ZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3Ry
aW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7Ci0g
ICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb25TdWJzdHJpbmcodm0sIGV4ZWMpOwotICAg
ICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChuZXdTdHJp
bmctPmlzUm9wZSgpKTsKLSAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKLSAgICB9Ci0KICAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1JvcGVTdHJpbmcqIGNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2
ZWQoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBKU1N0cmluZyog
YmFzZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewotICAgICAgICBK
U1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9w
ZVN0cmluZz4odm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0KSkgSlNSb3BlU3RyaW5nKFN1YnN0cmlu
Z09mUmVzb2x2ZWQsIHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIEpTUm9wZVN0
cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5n
Pih2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9mZnNl
dCwgbGVuZ3RoKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmluZ09m
UmVzb2x2ZWQodm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CiAgICAg
ICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKQEAgLTg1MCwxNiArODEwLDMxIEBAIGlu
bGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0
dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCi1pbmxpbmUgSlNTdHJp
bmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3Ry
aW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogYmFzZSwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG9mZnNldCA8PSBzLT5sZW5ndGgo
KSk7Ci0gICAgQVNTRVJUKGxlbmd0aCA8PSBzLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKG9mZnNl
dCArIGxlbmd0aCA8PSBzLT5sZW5ndGgoKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgQVNTRVJUKG9mZnNldCA8PSBiYXNlLT5sZW5ndGgoKSk7Cisg
ICAgQVNTRVJUKGxlbmd0aCA8PSBiYXNlLT5sZW5ndGgoKSk7CisgICAgQVNTRVJUKG9mZnNldCAr
IGxlbmd0aCA8PSBiYXNlLT5sZW5ndGgoKSk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiB2bS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKLSAgICBpZiAoIW9mZnNldCAmJiBs
ZW5ndGggPT0gcy0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzOwotICAgIHJldHVybiBKU1Jv
cGVTdHJpbmc6OmNyZWF0ZSh2bSwgZXhlYywgcywgb2Zmc2V0LCBsZW5ndGgpOworICAgIGlmICgh
b2Zmc2V0ICYmIGxlbmd0aCA9PSBiYXNlLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGJhc2U7
CisKKyAgICAvLyBGb3Igbm93LCBsZXQncyBub3QgYWxsb3cgc3Vic3RyaW5ncyB3aXRoIGEgcm9w
ZSBiYXNlLgorICAgIC8vIFJlc29sdmUgbm9uLXN1YnN0cmluZyByb3BlIGJhc2VzIHNvIHdlIGRv
bid0IGhhdmUgdG8gZGVhbCB3aXRoIGl0LgorICAgIC8vIEZJWE1FOiBFdmFsdWF0ZSBpZiB0aGlz
IHdvdWxkIGJlIHdvcnRoIGFkZGluZyBtb3JlIGJyYW5jaGVzLgorICAgIGlmIChiYXNlLT5pc1N1
YnN0cmluZygpKSB7CisgICAgICAgIEpTUm9wZVN0cmluZyogYmFzZVJvcGUgPSBqc0Nhc3Q8SlNS
b3BlU3RyaW5nKj4oYmFzZSk7CisgICAgICAgIGJhc2UgPSBiYXNlUm9wZS0+c3Vic3RyaW5nQmFz
ZSgpOworICAgICAgICBvZmZzZXQgPSBiYXNlUm9wZS0+c3Vic3RyaW5nT2Zmc2V0KCkgKyBvZmZz
ZXQ7CisgICAgICAgIEFTU0VSVCghYmFzZS0+aXNSb3BlKCkpOworICAgIH0gZWxzZSBpZiAoYmFz
ZS0+aXNSb3BlKCkpIHsKKyAgICAgICAganNDYXN0PEpTUm9wZVN0cmluZyo+KGJhc2UpLT5yZXNv
bHZlUm9wZShleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgfQorICAgIHJldHVybiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIG51bGxwdHIs
IGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBK
U1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC04NjcsMTAg
Kzg0MiwxNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZChWTSYgdm0s
IEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleAogICAgIEFTU0VSVChvZmZzZXQgPD0g
cy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChsZW5ndGggPD0gcy0+bGVuZ3RoKCkpOwogICAgIEFT
U0VSVChvZmZzZXQgKyBsZW5ndGggPD0gcy0+bGVuZ3RoKCkpOworICAgIEFTU0VSVCghcy0+aXNS
b3BlKCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKCk7CiAgICAgaWYgKCFvZmZzZXQgJiYgbGVuZ3RoID09IHMtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gczsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgYXV0
byYgYmFzZSA9IHMtPnZhbHVlSW50ZXJuYWwoKTsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0g
YmFzZS5jaGFyYWN0ZXJBdChvZmZzZXQpOworICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGNoYXJhY3Rlcik7CisgICAgfQogICAgIHJldHVybiBKU1Jv
cGVTdHJpbmc6OmNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGRlZmVycmFsQ29udGV4dCwg
cywgb2Zmc2V0LCBsZW5ndGgpOwogfQogCkBAIC05MTgsNyArOTAwLDYgQEAgaW5saW5lIEpTU3Ry
aW5nKiBqc093bmVkU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogaW5saW5lIEpTU3Ry
aW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4ganNFbXB0eVN0cmlu
ZygmZXhlYy0+dm0oKSk7IH0KIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzU3RyaW5nKCZleGVjLT52bSgpLCBzKTsg
fQogaW5saW5lIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIFVDaGFyIGMpIHsgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCZleGVjLT52bSgp
LCBjKTsgfQotaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGpzU3Vic3RyaW5nKCZleGVjLT52bSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KIGlubGluZSBK
U1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiBpbmxp
bmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYm
IHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwgV1RGTW92ZShzKSk7
IH0KIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQu
Y3BwCmluZGV4IDllMTAwZDI0MDNjNTRkYTYxMWIzMGE4OGMxYjg5NzM1NmNlOTk3YWEuLmE2MTA1
MDliNzZmZjM2YWUzYTA4ODUxYzA4OTBjYjg1MjFkOWY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcApAQCAtNDYsMTQg
KzQ2LDIxIEBAIHZvaWQgUmVnRXhwQ2FjaGVkUmVzdWx0Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYgdmlzaXRvcikKIEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldCh2bSwgb3duZXIsIG1f
bGFzdElucHV0LmdldCgpKTsKICAgICAgICAgaWYgKCFtX2xhc3RSZWdFeHApCiAgICAgICAgICAg
ICBtX2xhc3RSZWdFeHAuc2V0KHZtLCBvd25lciwgdm0ucmVnRXhwQ2FjaGUoKS0+ZW5zdXJlRW1w
dHlSZWdFeHAodm0pKTsKKworICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBudWxscHRyOwogICAg
ICAgICBpZiAobV9yZXN1bHQpCi0gICAgICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0V2l0aG91
dFdyaXRlQmFycmllcihjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgpLCBt
X3Jlc3VsdC5zdGFydCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0
KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQuc3RhcnQpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0V2l0aG91dFdyaXRlQmFycmllcihjcmVhdGVF
bXB0eVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fbGFz
dElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGNyZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIG1fcmVpZmllZFJlc3Vs
dC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHJlc3VsdCk7CiAgICAgICAgIG1fcmVpZmllZExlZnRD
b250ZXh0LmNsZWFyKCk7CiAgICAgICAgIG1fcmVpZmllZFJpZ2h0Q29udGV4dC5jbGVhcigpOwog
ICAgICAgICBtX3JlaWZpZWQgPSB0cnVlOwpAQCAtNjUsMTkgKzcyLDM0IEBAIEpTQXJyYXkqIFJl
Z0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
d25lcikKIEpTU3RyaW5nKiBSZWdFeHBDYWNoZWRSZXN1bHQ6OmxlZnRDb250ZXh0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG93bmVyKQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSByZWlm
aWVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgbGFzdFJlc3VsdChleGVjLCBvd25lcik7Ci0gICAgaWYg
KCFtX3JlaWZpZWRMZWZ0Q29udGV4dCkKLSAgICAgICAgbV9yZWlmaWVkTGVmdENvbnRleHQuc2V0
KGV4ZWMtPnZtKCksIG93bmVyLCBtX3Jlc3VsdC5zdGFydCA/IGpzU3Vic3RyaW5nKGV4ZWMsIG1f
cmVpZmllZElucHV0LmdldCgpLCAwLCBtX3Jlc3VsdC5zdGFydCkgOiBqc0VtcHR5U3RyaW5nKGV4
ZWMpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGlm
ICghbV9yZWlmaWVkTGVmdENvbnRleHQpIHsKKyAgICAgICAgSlNTdHJpbmcqIGxlZnRDb250ZXh0
ID0ganNTdWJzdHJpbmcoZXhlYywgbV9yZWlmaWVkSW5wdXQuZ2V0KCksIDAsIG1fcmVzdWx0LnN0
YXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAg
ICAgIG1fcmVpZmllZExlZnRDb250ZXh0LnNldCh2bSwgb3duZXIsIGxlZnRDb250ZXh0KTsKKyAg
ICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZExlZnRDb250ZXh0LmdldCgpOwogfQogCiBKU1N0cmlu
ZyogUmVnRXhwQ2FjaGVkUmVzdWx0OjpyaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb3duZXIpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZpZWQuCisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBsYXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIGlmICghbV9yZWlmaWVkUmlnaHRDb250ZXh0KSB7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fcmVpZmllZElucHV0LT5sZW5ndGgoKTsKLSAg
ICAgICAgbV9yZWlmaWVkUmlnaHRDb250ZXh0LnNldChleGVjLT52bSgpLCBvd25lciwgbV9yZXN1
bHQuZW5kICE9IGxlbmd0aCA/IGpzU3Vic3RyaW5nKGV4ZWMsIG1fcmVpZmllZElucHV0LmdldCgp
LCBtX3Jlc3VsdC5lbmQsIGxlbmd0aCAtIG1fcmVzdWx0LmVuZCkgOiBqc0VtcHR5U3RyaW5nKGV4
ZWMpKTsKKyAgICAgICAgSlNTdHJpbmcqIHJpZ2h0Q29udGV4dCA9IGpzU3Vic3RyaW5nKGV4ZWMs
IG1fcmVpZmllZElucHV0LmdldCgpLCBtX3Jlc3VsdC5lbmQsIGxlbmd0aCAtIG1fcmVzdWx0LmVu
ZCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAg
ICBtX3JlaWZpZWRSaWdodENvbnRleHQuc2V0KHZtLCBvd25lciwgcmlnaHRDb250ZXh0KTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZFJpZ2h0Q29udGV4dC5nZXQoKTsKIH0KQEAgLTg1LDEx
ICsxMDcsMTcgQEAgSlNTdHJpbmcqIFJlZ0V4cENhY2hlZFJlc3VsdDo6cmlnaHRDb250ZXh0KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVyKQogdm9pZCBSZWdFeHBDYWNoZWRSZXN1bHQ6
OnNldElucHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVyLCBKU1N0cmluZyogaW5w
dXQpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZpZWQsIG90aGVyd2lzZSBtX3JlaWZp
ZWRJbnB1dCB3aWxsIGJlIGlnbm9yZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBsYXN0UmVzdWx0KGV4
ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAg
IGxlZnRDb250ZXh0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogICAgIHJpZ2h0Q29udGV4dChleGVjLCBvd25lcik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBBU1NFUlQobV9yZWlmaWVkKTsKLSAgICBt
X3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIGlucHV0KTsKKyAgICBtX3JlaWZp
ZWRJbnB1dC5zZXQodm0sIG93bmVyLCBpbnB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwR2xvYmFsRGF0
YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBHbG9iYWxEYXRhLmNw
cAppbmRleCBjMzZkYWYyZjUxOTg3NGVkMzEyNTZmZWFjZjdjZDU4ZmZjNmM4OGVkLi45Y2JmNGE3
ZGRlNmE0MzA5MDkyYzVlZDQ5NWY2ZjRiMjNhYjNkNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBHbG9iYWxEYXRhLmNwcApAQCAtMzUsNyArMzUsMTEg
QEAgdm9pZCBSZWdFeHBHbG9iYWxEYXRhOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKIAogSlNWYWx1ZSBSZWdFeHBHbG9iYWxEYXRhOjpnZXRCYWNrcmVmKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIG93bmVyLCB1bnNpZ25lZCBpKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIG93
bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGkg
PCBhcnJheS0+bGVuZ3RoKCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlKGFy
cmF5KS5nZXQoZXhlYywgaSk7CkBAIC00MywxMiArNDcsMTcgQEAgSlNWYWx1ZSBSZWdFeHBHbG9i
YWxEYXRhOjpnZXRCYWNrcmVmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIG93bmVy
LCB1bnMKICAgICAgICAgaWYgKCFyZXN1bHQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAg
IHJldHVybiBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwR2xvYmFsRGF0
YTo6Z2V0TGFzdFBhcmVuKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIG93bmVyKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0
UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwogICAgIGlmIChsZW5n
dGggPiAxKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZShhcnJheSkuZ2V0KGV4
ZWMsIGxlbmd0aCAtIDEpOwpAQCAtNTYsNyArNjUsNyBAQCBKU1ZhbHVlIFJlZ0V4cEdsb2JhbERh
dGE6OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBvd25lcikK
ICAgICAgICAgaWYgKCFyZXN1bHQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgIHJldHVy
biBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwR2xvYmFsRGF0YTo6Z2V0
TGVmdENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogb3duZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IDhhZWRjYTYz
NGM0OGJmZDYzYzEyNTM1NTlhODAwZDJkMzZmOTFmMjguLjZmMmI5MDk3ZWE0ZGFkZTY1YWMxOTlm
MTAwY2RjNzVmYTU3NmM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpz
U3RyaW5nV2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlCiAg
ICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3Ry
aW5nKTsKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpOwogICAgIH0KLSAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJmV4
ZWMtPnZtKCksIHN0cmluZyk7CiB9CiAKIC8vIEhlbHBlciB0aGF0IHRyaWVzIHRvIHVzZSB0aGUg
SlNTdHJpbmcgc3Vic3RyaW5nIHNoYXJpbmcgbWVjaGFuaXNtIGlmICdvcmlnaW5hbFZhbHVlJyBp
cyBhIEpTU3RyaW5nLgpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBq
c1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29ucwog
ICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0
cmluZyk7CiAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5h
bFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KLSAgICByZXR1cm4ganNTdWJzdHJpbmco
ZXhlYywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIGpzU3Vic3RyaW5nKCZl
eGVjLT52bSgpLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAppbmRleCA3YmZiNDM4MTkyODRiMjBiYjBiMzJjMTkzZTg2YjczNTY5OTE2MzJlLi5kZDBl
N2JiYjEwMDRmOThlZDUwNDBmMzBkZGY4Zjg1YzQwYmMwOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTUyNyw3ICs1Mjcs
NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2Vh
cmNoKAogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGNvbnN0IFN0cmluZyYgc291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
c291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsKICAgICB1bnNpZ25lZCBzb3VyY2VMZW4gPSBz
b3VyY2UubGVuZ3RoKCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4o
c2VhcmNoVmFsdWUpOwpAQCAtNjU2LDggKzY1NiwxMCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogCiAgICAgICAgICAgICAgICAgICAg
IGlmIChtYXRjaFN0YXJ0IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5WYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhdHRlcm5WYWx1ZSA9IGpzU3Vic3RyaW5nKGV4ZWMsIHNvdXJjZSwgbWF0
Y2hTdGFydCwgbWF0Y2hMZW4pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBhdHRlcm5WYWx1ZSA9IGpzU3Vic3RyaW5nKCZ2bSwgc291cmNlLCBt
YXRjaFN0YXJ0LCBtYXRjaExlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHBhdHRlcm5WYWx1ZSk7CiAKQEAgLTczNSw3ICs3
MzcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cEVtcHR5U3RyKAogICAgICAgICAvLyBFUzUuMSAxNS41LjQuMTAgc3RlcCA4LmEu
CiAgICAgICAgIHNlYXJjaFZhbHVlLT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgICAgICBjb25zdCBTdHJpbmcm
IHNvdXJjZSA9IHRoaXNWYWx1ZS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzb3VyY2Ug
PSB0aGlzVmFsdWUtPnZhbHVlKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZW1vdmVV
c2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywgdGhpc1ZhbHVlLCBzb3VyY2UsIHJlZ0V4cCkpOwog
ICAgIH0KQEAgLTc3OCw3ICs3ODAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyog
cmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLAogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nID0ganNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSBq
c1N0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtNzky
LDcgKzc5NCw5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdT
dHJpbmdTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7Ci0gICAgICAgIGFyZ3MuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgbWF0
Y2hTdGFydCwgc2VhcmNoU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpKTsKKyAgICAgICAgYXV0byog
c3Vic3RyaW5nID0ganNTdWJzdHJpbmcoJnZtLCBzdHJpbmcsIG1hdGNoU3RhcnQsIHNlYXJjaFN0
cmluZy5pbXBsKCktPmxlbmd0aCgpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CisgICAgICAgIGFyZ3MuYXBwZW5kKHN1YnN0cmluZyk7CiAgICAgICAgIGFy
Z3MuYXBwZW5kKGpzTnVtYmVyKG1hdGNoU3RhcnQpKTsKICAgICAgICAgYXJncy5hcHBlbmQoanNT
dHJpbmcpOwogICAgICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTExNTMs
OCArMTE1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGRvdWJsZSBlbmQgPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVu
IDogYTEudG9JbnRlZ2VyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKGV4ZWMsIFdURk1vdmUocyksIHN0YXJ0LCBlbmQpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKHZtLCBXVEZNb3ZlKHMpLCBzdGFy
dCwgZW5kKSk7CiB9CiAKIC8vIFJldHVybiB0cnVlIGluIGNhc2Ugb2YgZWFybHkgcmV0dXJuIChy
ZXN1bHRMZW5ndGggZ290IHRvIGxpbWl0TGVuZ3RoKS4KQEAgLTExNzYsNyArMTE3OSw5IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGwoRXhl
Y1N0YXRlKiBleGVjLCBKU0FycmF5CiAgICAgICAgIC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZl
KS4KICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFs
IG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLAogICAgICAgICAv
LyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFibGVdXTogdHJ1
ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFs
c2UuCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBq
c1N1YnN0cmluZyhleGVjLCBvcmlnaW5hbFZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9z
aXRpb24gLSBwb3NpdGlvbikpOworICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmlu
ZyhleGVjLCBvcmlnaW5hbFZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBw
b3NpdGlvbik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1YnN0cmlu
Zyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
Ly8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9
PSBsaW0sIHJldHVybiBBLgpAQCAtMTMwMCw4ICsxMzA1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJz
dHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChp
bmNsdXNpdmUpCiAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCiAgICAg
ICAgICAgICAvLyAyLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhB
KSwgVCkuCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExl
bmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNo
UG9zaXRpb24gLSBwb3NpdGlvbikpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBq
c1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlv
biAtIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0
aCwgc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgogICAgICAgICAg
ICAgLy8gNC4gSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgogICAgICAgICAgICAgaWYgKCsr
cmVzdWx0TGVuZ3RoID09IGxpbWl0KQpAQCAtMTMxNiw4ICsxMzIzLDEwIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0
cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGlu
Y2x1c2l2ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgogICAgIC8vIDE2LiBD
YWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgYXV0
byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRp
b24sIGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwg
aW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgrKywgc3Vic3RyaW5nKTsKIAogICAg
IC8vIDE3LiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xMzYxLDkgKzEzNzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBsZW5ndGggPSBsZW4gLSBz
dGFydDsKICAgICB1bnNpZ25lZCBzdWJzdHJpbmdTdGFydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydCk7CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxlbmd0aCk7CisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmIChqc1N0cmluZykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCBqc1N0cmlu
Zywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywgdVN0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0
cmluZ0xlbmd0aCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoJnZt
LCB1U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTE0MjEsNyArMTQzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAg
ICAgdW5zaWduZWQgc3Vic3RyaW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQp
OwogICAgIHVuc2lnbmVkIHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQpIC0gc3Vic3RyaW5nU3RhcnQ7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0
cmluZyhleGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5n
KGV4ZWMsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNl
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0MzQsNyArMTQ0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJp
bmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzID0gc1Zh
bC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBT
dHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2Fs
ZSgpOwogICAgIGlmIChsb3dlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBzLmltcGwoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKQEAgLTE0NTEsNyArMTQ2MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgY29uc3Qg
U3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1
ZShleGVjKTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJj
YXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmICh1cHBlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBz
LmltcGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZUlubGluZXMu
aAppbmRleCA0ZDA2MTEzZmRlNTFkMzI5ZGE2MjdmZTdjZmY4NzY4NzFkYzEzNjE1Li43NWNlOGQx
YWM4MjkyODJhYmVlNjk2Mzc5NDYyNzBhZmVkMjU0NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oCkBAIC0zMCw3
ICszMCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlw
ZT4KLUFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHN0cmluZ1NsaWNlKEV4ZWNTdGF0ZSogZXhlYywg
U3RyaW5nJiYgc3RyaW5nLCBOdW1iZXJUeXBlIHN0YXJ0LCBOdW1iZXJUeXBlIGVuZCkKK0FMV0FZ
U19JTkxJTkUgSlNTdHJpbmcqIHN0cmluZ1NsaWNlKFZNJiB2bSwgU3RyaW5nJiYgc3RyaW5nLCBO
dW1iZXJUeXBlIHN0YXJ0LCBOdW1iZXJUeXBlIGVuZCkKIHsKICAgICBpbnQzMl90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKICAgICBOdW1iZXJUeXBlIGZyb20gPSBzdGFydCA8IDAgPyBsZW5n
dGggKyBzdGFydCA6IHN0YXJ0OwpAQCAtNDAsOSArNDAsOSBAQCBBTFdBWVNfSU5MSU5FIEpTU3Ry
aW5nKiBzdHJpbmdTbGljZShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYmIHN0cmluZywgTnVtYmVy
VHlwZQogICAgICAgICAgICAgZnJvbSA9IDA7CiAgICAgICAgIGlmICh0byA+IGxlbmd0aCkKICAg
ICAgICAgICAgIHRvID0gbGVuZ3RoOwotICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywg
V1RGTW92ZShzdHJpbmcpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih0bykgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbSkpOworICAgICAgICBy
ZXR1cm4ganNTdWJzdHJpbmcoJnZtLCBXVEZNb3ZlKHN0cmluZyksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmcm9tKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvKSAtIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmcm9tKSk7CiAgICAgfQotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAg
IHJldHVybiBqc0VtcHR5U3RyaW5nKCZ2bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="381376"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>