<?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>122518</bug_id>
          
          <creation_ts>2013-10-08 13:01:08 -0700</creation_ts>
          <short_desc>OSR exit using llvm.webkit.stackmap should pass more tests</short_desc>
          <delta_ts>2013-10-11 11:42:03 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122487</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937633</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-08 13:01:08 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938558</commentid>
    <comment_count>1</comment_count>
      <attachid>213929</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-10 14:55:40 -0700</bug_when>
    <thetext>Created attachment 213929
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938585</commentid>
    <comment_count>2</comment_count>
      <attachid>213929</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-10 15:48:56 -0700</bug_when>
    <thetext>Comment on attachment 213929
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938591</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-10 15:57:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/157264</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213929</attachid>
            <date>2013-10-10 14:55:40 -0700</date>
            <delta_ts>2013-10-10 15:48:56 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57101</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBA
QAorMjAxMy0xMC0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE9TUiBleGl0IHVzaW5nIGxsdm0ud2Via2l0LnN0YWNrbWFwIHNob3VsZCBwYXNzIG1vcmUgdGVz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjUx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgLSBNYWtlIHRoZSBYODZBc3NlbWJsZXIgY2FwYWJsZSBvZiBkZWFsaW5nIHdpdGggYWxsIFhN
TSByZWdpc3RlcnMuCisgICAgICAgIAorICAgICAgICAtIE1ha2UgdGhlIFN0YWNrTWFwcyBjb2Rl
IG9uIFdlYktpdCdzIHNpZGUgY2FwYWJsZSBvZiBkZWFsaW5nIHdpdGggWE1NIHJlZ2lzdGVycy4K
KyAgICAgICAgCisgICAgICAgIC0gRmFjdG9yIG91dCBtb3N0IG9mIHRoZSBzbWFydHMgb2YgU3Rh
Y2tNYXBzOjpMb2NhdGlvbiBpbnRvIGEgc2VsZi1jb250YWluZWQgb2JqZWN0LgorICAgICAgICAg
IFByZXZpb3VzbHkgeW91IG5lZWRlZCBib3RoIFN0YWNrTWFwczo6TG9jYXRpb24gYW5kIGEgU3Rh
Y2tNYXBzIHJlZmVyZW5jZSB0byBkbyBtb3N0CisgICAgICAgICAgdGhpbmdzIHNpbmNlIHRoZSBM
b2NhdGlvbiBtaWdodCBoYXZlIHJlZmVycmVkIHRvIGEgY29uc3RhbnQuIE5vdyB5b3UgY2FuIGp1
c3QgZ2V0IGEKKyAgICAgICAgICBzZWxmLWNvbnRhaW5lZCBMb2NhdGlvbiBvYmplY3QuCisgICAg
ICAgIAorICAgICAgICAtIEZpeCBhIGJ1ZyB3aGVyZSBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5r
IGdlbmVyYXRvciB3YXMgYXNzdW1pbmcgdGhhdCB0aGUgY2FsbCBmcmFtZQorICAgICAgICAgIHJl
Z2lzdGVyIGlzIGFscmVhZHkgaW4gYXJndW1lbnRHUFIwLiBJbiB0aGUgZnV0dXJlLCB0aGUgY2Fs
bCBmcmFtZSB3aWxsIGp1c3QgYmUgdGhlCisgICAgICAgICAgbWFjaGluZSBGUCBhbmQgd2Ugd29u
J3QgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLiBCdXQgZm9yIG5vdyB0aGUgImNhbGwgZnJh
bWUiIGlzCisgICAgICAgICAganVzdCBhIG5vcm1hbCB2YWx1ZSBpbiBMTFZNIElSIGFuZCBtYXkg
ZW5kIHVwIGluIGFueSByZWdpc3Rlci4gTWFrZSB0aGUgT1NSIGV4aXQKKyAgICAgICAgICBnZW5l
cmF0aW9uIHRodW5rIGdlbmVyYXRvciBwb2x5bW9ycGhpYyBvdmVyIHRoZSBjYWxsIGZyYW1lIGFy
Z3VtZW50J3MgTG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAtIE1vdmUgdGhlIHN0dWZmIHRo
YXQgZGVwZW5kcyBvbiB0aGUgcG9seW1vcnBoaWMgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayBn
ZW5lcmF0b3IKKyAgICAgICAgICBpbnRvIHRoZSBmaW5hbGl6ZXIsIHNpbmNlIGdlbmVyYXRpbmcg
YW5kIGxpbmtpbmcgb25lIG9mIHRob3NlIHRodW5rcyByZXF1aXJlcyBhIGNhY2hlCisgICAgICAg
ICAgZmx1c2ggYW5kIHdlIG5lZWQgdG8gZG8gdGhhdCBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2Vt
Ymxlcjo6Zmlyc3RSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsYXN0
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpuZXh0
RlBSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAg
KiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
Zmlyc3RGUFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3Rlcik6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y29tcGlsZUltcGwpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMpOgorICAgICAgICAqIGZ0bC9GVExF
eGl0VGh1bmtHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRUaHVua0dlbmVy
YXRvcjo6ZW1pdFRodW5rKToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VGh1bmtHZW5lcmF0b3I6
OmVtaXRUaHVua3MpOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgICog
ZnRsL0ZUTEpJVEZpbmFsaXplci5oOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG9jYXRpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6Zm9yU3RhY2ttYXBzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb2NhdGlvbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246
Omludm9sdmVzR1BSKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6aXNHUFIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpncHIpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0
aW9uOjppc0ZQUik6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246OmZwcik6CisgICAgICAg
IChKU0M6OkZUTDo6TG9jYXRpb246OnJlc3RvcmVJbnRvKToKKyAgICAgICAgKFdURjo6cHJpbnRJ
bnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTExvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpGVEw6OkxvY2F0aW9uOjpMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRp
b246OmZvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6Zm9ySW5kaXJl
Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpmb3JDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG9jYXRpb246OmtpbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9u
OjpoYXNEd2FyZlJlZ051bSk6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246OmR3YXJmUmVn
TnVtKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6aGFzT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb2NhdGlvbjo6b2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlv
bjo6aGFzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpjb25zdGFudCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkZUTDo6TG9jYXRpb246OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb2NhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246
Omhhc2gpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uSGFzaDo6aGFzaCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG9jYXRpb25IYXNoOjplcXVhbCk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YXBwZW5k
T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxpbmtPU1JFeGl0
c0FuZENvbXBsZXRlSW5pdGlhbGl6YXRpb25CbG9ja3MpOgorICAgICAgICAqIGZ0bC9GVExTYXZl
UmVzdG9yZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Ynl0ZXNGb3JGUFJzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcyk6CisgICAgICAgIChK
U0M6OkZUTDo6b2Zmc2V0T2ZGUFIpOgorICAgICAgICAoSlNDOjpGVEw6OnNhdmVBbGxSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAq
IGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0bC9GVExTdGFja01hcHMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OlN0YWNrTWFwczo6TG9jYXRpb246OnJlc3RvcmVJbnRvKToKKyAg
ICAgICAgKiBmdGwvRlRMU3RhY2tNYXBzLmg6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmg6Cisg
ICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3NyRXhpdEdl
bmVyYXRpb25XaXRob3V0U3RhY2tNYXBUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6b3NyRXhpdEdlbmVyYXRpb25XaXRoU3RhY2tNYXBUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogZnRsL0ZUTFRodW5rcy5oOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyYXRlSWZOZWNlc3Nh
cnkpOgorICAgICAgICAoSlNDOjpGVEw6OlRodW5rczo6Z2V0T1NSRXhpdEdlbmVyYXRpb25UaHVu
ayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDEzLTEwLTEwICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGJhY2tEYXRhIHVubmVjZXNzYXJp
bHkgY2FjaGVzIHRoZSBKU1ZhbHVlIGZvciBjdXJyZW50VGhpcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzYsNiArMzc2LDggQEAKIAkJMEZDQ0FFNDUxNkQwQ0Y3NDAwRDBDNjVCIC8qIFBhcnNl
ckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkNFRkFBQjE4MDRDMTNFMDA0NzJD
RTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3Jl
LmNwcCAqLzsgfTsKIAkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFB
QTE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkNFRkFERjE4MDczOEMwMDA0NzJDRTQg
LyogRlRMTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZDRUZBREQxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmNwcCAqLzsg
fTsKKwkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFERTE4MDczOEMwMDA0
NzJDRTQgLyogRlRMTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
MkM5MjMxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQzQzgyNjE0MTE1RDQwMDBG
RDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRDNDODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICov
OyB9OwogCQkwRkQzQzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyMjE0MTE1RDBFMDBG
RDgxQ0IgLyogREZHRHJpdmVyLmggKi87IH07CkBAIC0xNjA2LDYgKzE2MDgsOCBAQAogCQkwRkND
QUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFyc2VyRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNhdmVSZXN0b3JlLmNwcDsgcGF0aCA9
IGZ0bC9GVExTYXZlUmVzdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
Q0VGQUFBMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTYXZlUmVzdG9yZS5oOyBwYXRoID0gZnRsL0ZUTFNhdmVS
ZXN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUREMTgwNzM4QzAw
MDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGVExMb2NhdGlvbi5jcHA7IHBhdGggPSBmdGwvRlRMTG9jYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkNFRkFERTE4MDczOEMwMDA0NzJDRTQgLyogRlRM
TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTG9jYXRpb24u
aDsgcGF0aCA9IGZ0bC9GVExMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkQyQzkyMzE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRHJpdmVyLmNwcDsg
cGF0aCA9IGRmZy9ERkdEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0RyaXZlci5oOyBwYXRoID0gZGZnL0RGR0RyaXZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNiw2ICsyNjQwLDggQEAKIAkJCQlBNzhBOTc3
RTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxpemVyLmggKi8sCiAJCQkJMEY4RjJCOTMx
NzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsuY3BwICovLAogCQkJCTBGOEYyQjk0MTcyRTA0OUUw
MDdEQkRBNSAvKiBGVExMaW5rLmggKi8sCisJCQkJMEZDRUZBREQxODA3MzhDMDAwNDcyQ0U0IC8q
IEZUTExvY2F0aW9uLmNwcCAqLywKKwkJCQkwRkNFRkFERTE4MDczOEMwMDA0NzJDRTQgLyogRlRM
TG9jYXRpb24uaCAqLywKIAkJCQkwRkVBMEEwNDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJE
RkdUb0xMVk0uY3BwICovLAogCQkJCTBGRUEwQTA1MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dl
ckRGR1RvTExWTS5oICovLAogCQkJCUE3RDg5RDAxMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dl
cmVkTm9kZVZhbHVlLmggKi8sCkBAIC00MjQwLDYgKzQyNDYsNyBAQAogCQkJCTBGMkI2NkU5MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RUExN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNl
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGQTlFOTIxNDJCQkIyRTAwMTc3M0I3IC8q
IEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTkwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01MTE1
LDYgKzUxMjIsNyBAQAogCQkJCUMyMjM5RDFBMTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjExMjJFMTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJl
YWRTaGFyZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1
RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0VGQURGMTgw
NzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4
MDg1NTEwN0VDMEU3MDAxM0U3QjIgLyogR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MkUzMTM1MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQyRTMxMzcxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNdjdBc3NlbWJsZXIuaAkocmV2aXNpb24gMTU3MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNiAr
NDg5LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdp
c3RlcklEIEZQU2luZ2xlUmVnaXN0ZXJJRDsKICAgICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBE
b3VibGVSZWdpc3RlcklEIEZQRG91YmxlUmVnaXN0ZXJJRDsKICAgICB0eXBlZGVmIEFSTVJlZ2lz
dGVyczo6RlBRdWFkUmVnaXN0ZXJJRCBGUFF1YWRSZWdpc3RlcklEOworICAgIHR5cGVkZWYgRlBE
b3VibGVSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKKyAgICAKKyAgICBzdGF0aWMgUmVnaXN0ZXJJ
RCBmaXJzdFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpyMDsgfQorICAgIHN0YXRp
YyBSZWdpc3RlcklEIGxhc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjEzOyB9
CisgICAgCisgICAgc3RhdGljIEZQUmVnaXN0ZXJJRCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVy
biBBUk1SZWdpc3RlcnM6OmQwOyB9CisgICAgc3RhdGljIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdp
c3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6ZDMxOyB9CiAKICAgICAvLyAoSFMsIExPLCBI
SSwgTFMpIC0+IChBRSwgQiwgQSwgQkUpCiAgICAgLy8gKFZTLCBWQykgLT4gKE8sIE5PKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NCwxMCArNzQsMTQgQEAgcHVibGljOgogICAgIGNsYXNzIEp1bXA7CiAKICAgICB0eXBlZGVm
IHR5cGVuYW1lIEFzc2VtYmxlclR5cGU6OlJlZ2lzdGVySUQgUmVnaXN0ZXJJRDsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIEFzc2VtYmxlclR5cGU6OkZQUmVnaXN0ZXJJRCBGUFJlZ2lzdGVySUQ7CiAg
ICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFzc2Vt
YmxlclR5cGU6OmZpcnN0UmVnaXN0ZXIoKTsgfQogICAgIHN0YXRpYyBSZWdpc3RlcklEIGxhc3RS
ZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6Omxhc3RSZWdpc3RlcigpOyB9CiAKKyAg
ICBzdGF0aWMgRlBSZWdpc3RlcklEIGZpcnN0RlBSZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxl
clR5cGU6OmZpcnN0RlBSZWdpc3RlcigpOyB9CisgICAgc3RhdGljIEZQUmVnaXN0ZXJJRCBsYXN0
RlBSZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6Omxhc3RGUFJlZ2lzdGVyKCk7IH0K
KwogICAgIC8vIFNlY3Rpb24gMTogTWFjcm9Bc3NlbWJsZXIgb3BlcmFuZCB0eXBlcwogICAgIC8v
CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVyYW5kcyB0byBNYWNy
b0Fzc2VtYmxlciBvcGVyYXRpb25zLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTU3MjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw2ICs5MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbmV4dFJl
Z2lzdGVyKGZpcnN0UmVhbFJlZ2lzdGVyKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgRlBS
ZWdpc3RlcklEIG5leHRGUFJlZ2lzdGVyKEZQUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSZWdpc3RlcklEPihyZWcgKyAxKTsKKyAgICB9CiAKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnBvcDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6Omp1bXA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTU3MjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw4ICsxMDEsNiBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIEZQUmVnaXN0ZXJJ
RDsKLQogICAgIHN0YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0ciA9IFRpbWVzRm91cjsKIAogICAg
IGVudW0gUmVsYXRpb25hbENvbmRpdGlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZp
c2lvbiAxNTcyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBjb25zdCBpbnQgRG91YmxlQ29uZGl0aW9uQml0cyA9IERvdWJsZUNv
bmRpdGlvbkJpdEludmVydCB8IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWw7CiAKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIFg4NkFzc2VtYmxlcjo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKICAg
ICB0eXBlZGVmIFg4NkFzc2VtYmxlcjo6WE1NUmVnaXN0ZXJJRCBYTU1SZWdpc3RlcklEOwogICAg
IAogICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHB0cmRp
ZmZfdCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTU3MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTcg
QEAgbmFtZXNwYWNlIFg4NlJlZ2lzdGVycyB7CiAgICAgICAgIHhtbTUsCiAgICAgICAgIHhtbTYs
CiAgICAgICAgIHhtbTcsCisKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICB4bW04LAorICAgICAg
ICB4bW05LAorICAgICAgICB4bW0xMCwKKyAgICAgICAgeG1tMTEsCisgICAgICAgIHhtbTEyLAor
ICAgICAgICB4bW0xMywKKyAgICAgICAgeG1tMTQsCisgICAgICAgIHhtbTE1LAorI2VuZGlmCiAg
ICAgfSBYTU1SZWdpc3RlcklEOwogCiAjaWYgVVNFKE1BU01fUFJPQkUpCkBAIC0xMjYsNiArMTM3
LDcgQEAgbmFtZXNwYWNlIFg4NlJlZ2lzdGVycyB7CiBjbGFzcyBYODZBc3NlbWJsZXIgewogcHVi
bGljOgogICAgIHR5cGVkZWYgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIFJlZ2lzdGVySUQ7Cisg
ICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3RlcigpIHsgcmV0dXJuIFg4NlJl
Z2lzdGVyczo6ZWF4OyB9CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgbGFzdFJlZ2lzdGVyKCkKICAg
ICB7CkBAIC0xMzgsNiArMTUwLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICB0eXBlZGVmIFg4NlJl
Z2lzdGVyczo6WE1NUmVnaXN0ZXJJRCBYTU1SZWdpc3RlcklEOwogICAgIHR5cGVkZWYgWE1NUmVn
aXN0ZXJJRCBGUFJlZ2lzdGVySUQ7CisgICAgCisgICAgc3RhdGljIEZQUmVnaXN0ZXJJRCBmaXJz
dEZQUmVnaXN0ZXIoKSB7IHJldHVybiBYODZSZWdpc3RlcnM6OnhtbTA7IH0KKyAgICBzdGF0aWMg
RlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6eG1tMTU7CisjZWxzZQorICAgICAgICByZXR1cm4g
WDg2UmVnaXN0ZXJzOjp4bW03OworI2VuZGlmCisgICAgfQogCiAgICAgdHlwZWRlZiBlbnVtIHsK
ICAgICAgICAgQ29uZGl0aW9uTywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgQ29t
cGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIGRhdGFMb2coIkRGRyhEcml2ZXIp
IGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgbnVtYmVyIG9mIGlu
c3RydWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKICAg
ICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgREZHIGlzIGdvaW5n
IHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQuIFdlIHdhbnQgdG8KLSAgICAvLyBtYWtlIHN1cmUgdGhh
dCBhbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9uIHRoZSBtYWluIHRo
cmVhZC4KKyAgICAvLyBtYWtlIHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2Vz
IGZpbmFsaXphdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm0uZ2V0Q1RJU3R1Yihvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKHRocm93RXhj
ZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKTsKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIENvbXBpbGF0aW9u
UmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIHZtLmdldENUSVN0dWIodmlydHVhbENhbGxUaHVua0dl
bmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGh1bmtHZW5lcmF0
b3IpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgIHZtLmdldENUSVN0dWIoRlRMOjpvc3JFeGl0
R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRDVElTdHViKEZUTDo6b3NyRXhp
dEdlbmVyYXRpb25XaXRob3V0U3RhY2tNYXBUaHVua0dlbmVyYXRvcik7CiAjZW5kaWYKICAgICAK
ICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxNTcyMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsOSAr
MTEwLDYgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgIFN0
YWNrTWFwczo6UmVjb3JkTWFwJiByZWNvcmRNYXApCiB7CiAgICAgVk0mIHZtID0gc3RhdGUuZ3Jh
cGgubV92bTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0KLSAgICAg
ICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKLSAgICBD
b2RlTG9jYXRpb25MYWJlbCB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsu
Y29kZSgpKTsKIAogICAgIEV4aXRUaHVua0dlbmVyYXRvciBleGl0VGh1bmtHZW5lcmF0b3Ioc3Rh
dGUpOwogICAgIGV4aXRUaHVua0dlbmVyYXRvci5lbWl0VGh1bmtzKCk7CkBAIC0xMjAsMjggKzEx
NywzNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAg
IE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIo
CiAgICAgICAgICAgICB2bSwgJmV4aXRUaHVua0dlbmVyYXRvciwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoc3RhdGUub3Ny
RXhpdC5zaXplKCkgPT0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXplKCkpOworICAgICAgICBB
U1NFUlQoc3RhdGUuZmluYWxpemVyLT5vc3JFeGl0LnNpemUoKSA9PSBzdGF0ZS5qaXRDb2RlLT5v
c3JFeGl0LnNpemUoKSk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3RhdGUub3NyRXhpdC5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgT1NSRXhpdENvbXBp
bGF0aW9uSW5mbyYgaW5mbyA9IHN0YXRlLm9zckV4aXRbaV07CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gc3RhdGUuZmluYWxpemVyLT5v
c3JFeGl0W2ldOwogICAgICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGppdENvZGUtPm9zckV4aXRb
aV07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoaW5mby5tX3Ro
dW5rSnVtcCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkTWFwOjppdGVy
YXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZXhpdC5tX3N0YWNrbWFwSUQpOworICAgICAgICAg
ICAgaWYgKGl0ZXIgPT0gcmVjb3JkTWFwLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gSXQg
d2FzIG9wdGltaXplZCBvdXQuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGluZm8ubV90aHVua0FkZHJlc3MgPSBsaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKGluZm8ubV90aHVua0xhYmVsKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZXhpdC5tX3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLT5vZmZzZXRP
ZihpbmZvLm1fdGh1bmtKdW1wKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGUu
ZmluYWxpemVyLT5pbml0aWFsaXplRXhpdFRodW5rc0xpbmtCdWZmZXIobGlua0J1ZmZlci5yZWxl
YXNlKCkpOworICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPmV4aXRUaHVua3NMaW5rQnVmZmVyID0g
bGlua0J1ZmZlci5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNo
QnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBleGl0SW5kZXggPSBq
aXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgZXhpdEluZGV4LS07KSB7Ci0gICAgICAgIE9TUkV4aXRD
b21waWxhdGlvbkluZm8mIGluZm8gPSBzdGF0ZS5vc3JFeGl0W2V4aXRJbmRleF07CisgICAgICAg
IE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBzdGF0ZS5maW5hbGl6ZXItPm9zckV4aXRb
ZXhpdEluZGV4XTsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGppdENvZGUtPm9zckV4aXRbZXhp
dEluZGV4XTsKLSAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmQmIHJlY29yZCA9IHJlY29yZE1hcC5m
aW5kKGV4aXQubV9zdGFja21hcElEKS0+dmFsdWU7CisgICAgICAgIFN0YWNrTWFwczo6UmVjb3Jk
TWFwOjppdGVyYXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZXhpdC5tX3N0YWNrbWFwSUQpOwor
ICAgICAgICBpZiAoaXRlciA9PSByZWNvcmRNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgY291bGQgaGFwcGVuIGlmIExMVk0gb3B0aW1pemVzIG91dCBhbiBPU1IgZXhpdC4KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdGFja01hcHM6
OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWU7CiAgICAgICAgIAogICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VGh1bmtHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTU3MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIEV4aXRUaHVua0dlbmVyYXRvcjo6fkV4aXRUaHVua0dlbmVyYXRvcigKIAogdm9pZCBFeGl0
VGh1bmtHZW5lcmF0b3I6OmVtaXRUaHVuayh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBPU1JFeGl0
Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9zdGF0ZS5vc3JFeGl0W2luZGV4XTsKKyAgICBPU1JF
eGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9zdGF0ZS5maW5hbGl6ZXItPm9zckV4aXRbaW5k
ZXhdOwogICAgIAogICAgIGluZm8ubV90aHVua0xhYmVsID0gbGFiZWwoKTsKICAgICBpZiAoT3B0
aW9uczo6ZnRsT1NSRXhpdFVzZXNTdGFja21hcCgpKQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEV4
aXRUaHVua0dlbmVyYXRvcjo6ZW1pdFRodW5rKHVuc2lnCiAKIHZvaWQgRXhpdFRodW5rR2VuZXJh
dG9yOjplbWl0VGh1bmtzKCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdGF0
ZS5vc3JFeGl0LnNpemUoKTsgKytpKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0
YXRlLmZpbmFsaXplci0+b3NyRXhpdC5zaXplKCk7ICsraSkKICAgICAgICAgZW1pdFRodW5rKGkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6
ZXIuY3BwCShyZXZpc2lvbiAxNTcyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHUGxhbi5oIgorI2lu
Y2x1ZGUgIkZUTFRodW5rcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAK
QEAgLTUyLDI3ICs1Myw0NiBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogCiBib29s
IEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9qaXRDb2RlLT5oYW5kbGVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gaml0Q29kZS0+aGFuZGxlcygpLnNpemUoKTsgaS0tOykgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Y2FjaGVGbHVzaCgKLSAgICAgICAgICAgIG1faml0Q29kZS0+aGFuZGxlcygpW2ld
LT5zdGFydCgpLCBtX2ppdENvZGUtPmhhbmRsZXMoKVtpXS0+c2l6ZUluQnl0ZXMoKSk7CisgICAg
ICAgICAgICBqaXRDb2RlLT5oYW5kbGVzKClbaV0tPnN0YXJ0KCksIGppdENvZGUtPmhhbmRsZXMo
KVtpXS0+c2l6ZUluQnl0ZXMoKSk7CiAgICAgfQogICAgIAotICAgIGlmIChtX2V4aXRUaHVua3NM
aW5rQnVmZmVyKSB7Ci0gICAgICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUV4aXRUaHVua3MoCisg
ICAgaWYgKGV4aXRUaHVua3NMaW5rQnVmZmVyKSB7CisgICAgICAgIFN0YWNrTWFwczo6UmVjb3Jk
TWFwIHJlY29yZE1hcCA9IGppdENvZGUtPnN0YWNrbWFwcy5nZXRSZWNvcmRNYXAoKTsKKyAgICAg
ICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvc3JFeGl0LnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gb3NyRXhpdFtp
XTsKKyAgICAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBqaXRDb2RlLT5vc3JFeGl0W2ldOworICAg
ICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRNYXAu
ZmluZChleGl0Lm1fc3RhY2ttYXBJRCk7CisgICAgICAgICAgICBpZiAoaXRlciA9PSByZWNvcmRN
YXAuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIE9LLCBpdCB3YXMgb3B0aW1pemVk
IG91dC4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZXhpdFRodW5rc0xpbmtCdWZmZXItPmxpbmsoCisgICAgICAgICAg
ICAgICAgaW5mby5tX3RodW5rSnVtcCwKKyAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bCgKKyAgICAgICAgICAgICAgICAgICAgbV9wbGFuLnZtLmZ0bFRodW5rcy0+Z2V0T1NSRXhpdEdl
bmVyYXRpb25UaHVuaygKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGxhbi52bSwgTG9jYXRp
b246OmZvclN0YWNrbWFwcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXRDb2RlLT5z
dGFja21hcHMsIGl0ZXItPnZhbHVlLmxvY2F0aW9uc1swXSkpLmNvZGUoKSkpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBqaXRDb2RlLT5pbml0aWFsaXplRXhpdFRodW5rcygKICAgICAg
ICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKAotICAgICAgICAgICAgICAgICptX2V4aXRUaHVua3NM
aW5rQnVmZmVyLAorICAgICAgICAgICAgICAgICpleGl0VGh1bmtzTGlua0J1ZmZlciwKICAgICAg
ICAgICAgICAgICAoIkZUTCBleGl0IHRodW5rcyBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2Nr
V2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jay5nZXQoKSwgSklUQ29kZTo6RlRMSklUKSkuZGF0
YSgpKSkpOwogICAgIH0gLy8gZWxzZSB0aGlzIGZ1bmN0aW9uIGhhZCBubyBPU1IgZXhpdHMsIHNv
IG5vIGV4aXQgdGh1bmtzLgogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJp
dHlDaGVjazsKLSAgICBpZiAobV9hcml0eUNoZWNrLmlzU2V0KCkpCi0gICAgICAgIHdpdGhBcml0
eUNoZWNrID0gbV9lbnRyeXBvaW50TGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2sp
OwotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGUoCisgICAgaWYgKGFyaXR5Q2hlY2suaXNT
ZXQoKSkKKyAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBlbnRyeXBvaW50TGlua0J1ZmZlci0+bG9j
YXRpb25PZihhcml0eUNoZWNrKTsKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplQ29kZSgKICAgICAg
ICAgRklOQUxJWkVfREZHX0NPREUoCi0gICAgICAgICAgICAqbV9lbnRyeXBvaW50TGlua0J1ZmZl
ciwKLSAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggTExWTSBn
ZW5lcmF0ZWQgY29kZSBhdCAlcCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3Bs
YW4uY29kZUJsb2NrLmdldCgpLCBKSVRDb2RlOjpGVExKSVQpKS5kYXRhKCksIG1fZnVuY3Rpb24p
KSk7CisgICAgICAgICAgICAqZW50cnlwb2ludExpbmtCdWZmZXIsCisgICAgICAgICAgICAoIkZU
TCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIExMVk0gZ2VuZXJhdGVkIGNvZGUgYXQgJXAi
LCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jay5nZXQoKSwg
SklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKICAgICAKLSAgICBtX3BsYW4u
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSwgd2l0aEFyaXR5Q2hlY2spOworICAgIG1f
cGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgd2l0aEFyaXR5Q2hlY2spOwogICAg
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExKSVRGaW5hbGl6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVEZpbmFsaXplci5oCShyZXZpc2lvbiAxNTcyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiREZHRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiRlRMR2VuZXJhdGVkRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCisjaW5jbHVkZSAiRlRMT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9MTFZNSGVhZGVycy5oPgpAQCAtNDQsMzYgKzQ1
LDE1IEBAIHB1YmxpYzoKICAgICBKSVRGaW5hbGl6ZXIoREZHOjpQbGFuJik7CiAgICAgdmlydHVh
bCB+SklURmluYWxpemVyKCk7CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplRXhpdFRodW5rc0xp
bmtCdWZmZXIoUGFzc093blB0cjxMaW5rQnVmZmVyPiBidWZmZXIpCi0gICAgewotICAgICAgICBt
X2V4aXRUaHVua3NMaW5rQnVmZmVyID0gYnVmZmVyOwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxp
emVFbnRyeXBvaW50TGlua0J1ZmZlcihQYXNzT3duUHRyPExpbmtCdWZmZXI+IGJ1ZmZlcikKLSAg
ICB7Ci0gICAgICAgIG1fZW50cnlwb2ludExpbmtCdWZmZXIgPSBidWZmZXI7Ci0gICAgfQotICAg
IHZvaWQgaW5pdGlhbGl6ZUZ1bmN0aW9uKEdlbmVyYXRlZEZ1bmN0aW9uIGZ1bmN0aW9uKQotICAg
IHsKLSAgICAgICAgbV9mdW5jdGlvbiA9IGZ1bmN0aW9uOwotICAgIH0KLSAgICB2b2lkIGluaXRp
YWxpemVBcml0eUNoZWNrKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbCkKLSAgICB7Ci0gICAg
ICAgIG1fYXJpdHlDaGVjayA9IGxhYmVsOwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVKSVRD
b2RlKFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSkKLSAgICB7Ci0gICAgICAgIG1faml0Q29k
ZSA9IGppdENvZGU7Ci0gICAgfQotICAgIAogICAgIGJvb2wgZmluYWxpemUoKTsKICAgICBib29s
IGZpbmFsaXplRnVuY3Rpb24oKTsKIAotcHJpdmF0ZToKLSAgICBPd25QdHI8TGlua0J1ZmZlcj4g
bV9leGl0VGh1bmtzTGlua0J1ZmZlcjsKLSAgICBPd25QdHI8TGlua0J1ZmZlcj4gbV9lbnRyeXBv
aW50TGlua0J1ZmZlcjsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9hcml0eUNoZWNrOwot
ICAgIEdlbmVyYXRlZEZ1bmN0aW9uIG1fZnVuY3Rpb247Ci0gICAgUmVmUHRyPEpJVENvZGU+IG1f
aml0Q29kZTsKKyAgICBPd25QdHI8TGlua0J1ZmZlcj4gZXhpdFRodW5rc0xpbmtCdWZmZXI7Cisg
ICAgT3duUHRyPExpbmtCdWZmZXI+IGVudHJ5cG9pbnRMaW5rQnVmZmVyOworICAgIFZlY3RvcjxP
U1JFeGl0Q29tcGlsYXRpb25JbmZvPiBvc3JFeGl0OworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBhcml0eUNoZWNrOworICAgIEdlbmVyYXRlZEZ1bmN0aW9uIGZ1bmN0aW9uOworICAgIFJlZlB0
cjxKSVRDb2RlPiBqaXRDb2RlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTcyMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgCi0gICAgc3RhdGUuZmluYWxpemVyLT5pbml0aWFsaXplRW50cnlwb2lu
dExpbmtCdWZmZXIobGlua0J1ZmZlci5yZWxlYXNlKCkpOwotICAgIHN0YXRlLmZpbmFsaXplci0+
aW5pdGlhbGl6ZUZ1bmN0aW9uKHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKTsKLSAgICBzdGF0ZS5m
aW5hbGl6ZXItPmluaXRpYWxpemVBcml0eUNoZWNrKGFyaXR5Q2hlY2spOwotICAgIHN0YXRlLmZp
bmFsaXplci0+aW5pdGlhbGl6ZUpJVENvZGUoc3RhdGUuaml0Q29kZSk7CisgICAgc3RhdGUuZmlu
YWxpemVyLT5lbnRyeXBvaW50TGlua0J1ZmZlciA9IGxpbmtCdWZmZXIucmVsZWFzZSgpOworICAg
IHN0YXRlLmZpbmFsaXplci0+ZnVuY3Rpb24gPSBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbjsKKyAg
ICBzdGF0ZS5maW5hbGl6ZXItPmFyaXR5Q2hlY2sgPSBhcml0eUNoZWNrOworICAgIHN0YXRlLmZp
bmFsaXplci0+aml0Q29kZSA9IHN0YXRlLmppdENvZGU7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZUTExvY2F0aW9uLmgiCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIkZUTFNh
dmVSZXN0b3JlLmgiCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKKworTG9jYXRpb24gTG9jYXRpb246OmZvclN0YWNrbWFwcyhjb25z
dCBTdGFja01hcHMmIHN0YWNrbWFwcywgY29uc3QgU3RhY2tNYXBzOjpMb2NhdGlvbiYgbG9jYXRp
b24pCit7CisgICAgc3dpdGNoIChsb2NhdGlvbi5raW5kKSB7CisgICAgY2FzZSBTdGFja01hcHM6
OkxvY2F0aW9uOjpVbnByb2Nlc3NlZDoKKyAgICAgICAgcmV0dXJuIExvY2F0aW9uKCk7CisgICAg
ICAgIAorICAgIGNhc2UgU3RhY2tNYXBzOjpMb2NhdGlvbjo6UmVnaXN0ZXI6CisgICAgICAgIHJl
dHVybiBmb3JSZWdpc3Rlcihsb2NhdGlvbi5kd2FyZlJlZ051bSk7CisgICAgICAgIAorICAgIGNh
c2UgU3RhY2tNYXBzOjpMb2NhdGlvbjo6SW5kaXJlY3Q6CisgICAgICAgIHJldHVybiBmb3JJbmRp
cmVjdChsb2NhdGlvbi5kd2FyZlJlZ051bSwgbG9jYXRpb24ub2Zmc2V0KTsKKyAgICAgICAgCisg
ICAgY2FzZSBTdGFja01hcHM6OkxvY2F0aW9uOjpDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIGZv
ckNvbnN0YW50KGxvY2F0aW9uLm9mZnNldCk7CisgICAgICAgIAorICAgIGNhc2UgU3RhY2tNYXBz
OjpMb2NhdGlvbjo6Q29uc3RhbnRJbmRleDoKKyAgICAgICAgcmV0dXJuIGZvckNvbnN0YW50KHN0
YWNrbWFwcy5jb25zdGFudHNbbG9jYXRpb24ub2Zmc2V0XS5pbnRlZ2VyKTsKKyAgICB9CisgICAg
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBMb2NhdGlvbjo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIsIGtpbmQo
KSk7CisgICAgaWYgKGhhc0R3YXJmUmVnTnVtKCkpCisgICAgICAgIG91dC5wcmludCgiLCByZWci
LCBkd2FyZlJlZ051bSgpKTsKKyAgICBpZiAoaGFzT2Zmc2V0KCkpCisgICAgICAgIG91dC5wcmlu
dCgiLCAiLCBvZmZzZXQoKSk7CisgICAgaWYgKGhhc0NvbnN0YW50KCkpCisgICAgICAgIG91dC5w
cmludCgiLCAiLCBjb25zdGFudCgpKTsKKyAgICBvdXQucHJpbnQoIikiKTsKK30KKworYm9vbCBM
b2NhdGlvbjo6aW52b2x2ZXNHUFIoKSBjb25zdAoreworICAgIHJldHVybiBpc0dQUigpIHx8IGtp
bmQoKSA9PSBJbmRpcmVjdDsKK30KKworI2lmIENQVShYODZfNjQpIC8vIENQVSBjYXNlcyBmb3Ig
TG9jYXRpb24gbWV0aG9kcworLy8gVGhpcyBkZWNvZGVzIER3YXJmIGZsYXZvdXIgMCBmb3IgeDg2
LTY0LgorYm9vbCBMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAoreworICAgIHJldHVybiBraW5kKCkg
PT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWdOdW0oKSA8IDE2OworfQorCitHUFJSZWcgTG9jYXRpb246
OmdwcigpIGNvbnN0Cit7CisgICAgLy8gU3R1cGlkbHksIER3YXJmIGRvZXNuJ3QgbnVtYmVyIHRo
ZSByZWdpc3RlcnMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBhcmNoaXRlY3R1cmU7CisgICAgLy8g
Zm9yIGV4YW1wbGUsIHRoZSBhcmNoaXRlY3R1cmUgZW5jb2RlcyBDWCBhcyAxIGFuZCBEWCBhcyAy
IHdoaWxlIER3YXJmIGRvZXMgdGhlCisgICAgLy8gb3Bwb3NpdGUuIEhlbmNlIHdlIG5lZWQgdGhl
IHN3aXRjaC4KKyAgICAKKyAgICBBU1NFUlQoaXNHUFIoKSk7CisgICAgCisgICAgc3dpdGNoIChk
d2FyZlJlZ051bSgpKSB7CisgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJz
OjplYXg7CisgICAgY2FzZSAxOgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplZHg7Cisg
ICAgY2FzZSAyOgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgY2FzZSAz
OgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYng7CisgICAgY2FzZSA0OgorICAgICAg
ICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplc2k7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4g
WDg2UmVnaXN0ZXJzOjplZGk7CisgICAgY2FzZSA2OgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0
ZXJzOjplYnA7CisgICAgY2FzZSA3OgorICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplc3A7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZHdhcmZSZWdOdW0oKSA8IDE2
KTsKKyAgICAgICAgLy8gUmVnaXN0ZXJzIHI4Li5yMTUgYXJlIG51bWJlcmVkIHNlbnNpYmx5Lgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihkd2FyZlJlZ051bSgpKTsKKyAgICB9
Cit9CisKK2Jvb2wgTG9jYXRpb246OmlzRlBSKCkgY29uc3QKK3sKKyAgICByZXR1cm4ga2luZCgp
ID09IFJlZ2lzdGVyICYmIGR3YXJmUmVnTnVtKCkgPj0gMTcgJiYgZHdhcmZSZWdOdW0oKSA8PSAz
MjsKK30KKworRlBSUmVnIExvY2F0aW9uOjpmcHIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0ZQ
UigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihkd2FyZlJlZ051bSgpIC0gMTcp
OworfQorCit2b2lkIExvY2F0aW9uOjpyZXN0b3JlSW50byhNYWNyb0Fzc2VtYmxlciYgaml0LCBj
aGFyKiBzYXZlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoaXNH
UFIoKSkgeworICAgICAgICBqaXQubG9hZDY0KHNhdmVkUmVnaXN0ZXJzICsgb2Zmc2V0T2ZHUFIo
Z3ByKCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChp
c0ZQUigpKSB7CisgICAgICAgIGppdC5sb2FkNjQoc2F2ZWRSZWdpc3RlcnMgKyBvZmZzZXRPZkZQ
UihmcHIoKSksIHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc3dp
dGNoIChraW5kKCkpIHsKKyAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICAvLyBMTFZNIHVzZWQg
c29tZSByZWdpc3RlciB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQhCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2Fz
ZSBJbmRpcmVjdDoKKyAgICAgICAgaml0LmxvYWQ2NChzYXZlZFJlZ2lzdGVycyArIG9mZnNldE9m
R1BSKGdwcigpKSwgcmVzdWx0KTsKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHQsIG9mZnNldCgpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTY0KGNvbnN0YW50KCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGNhc2UgVW5wcm9jZXNzZWQ6CisgICAgICAgIC8vIFNob3VsZCBuZXZlciBz
ZWUgdGhpcyAtIGl0J3MgYW4gZW51bWVyYXRpb24gZW50cnkgb24gTExWTSdzIHNpZGUgdGhhdCBt
ZWFucyB0aGF0CisgICAgICAgIC8vIGl0IGhhc24ndCBwcm9jZXNzZWQgdGhpcyBsb2NhdGlvbi4K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorI2Vsc2Ug
Ly8gQ1BVIGNhc2VzIGZvciBMb2NhdGlvbiBtZXRob2RzCisjZXJyb3IgIkNQVSBhcmNoaXRlY3R1
cmUgbm90IHN1cHBvcnRlZC4iCisjZW5kaWYgLy8gQ1BVIGNhc2VzIGZvciBMb2NhdGlvbiBtZXRo
b2RzCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworbmFtZXNwYWNlIFdURiB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M6OkZUTDsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6RlRMOjpMb2NhdGlvbjo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgIGNhc2UgTG9jYXRpb246OlVucHJvY2Vzc2VkOgorICAgICAgICBvdXQucHJpbnQo
IlVucHJvY2Vzc2VkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExvY2F0aW9uOjpSZWdp
c3RlcjoKKyAgICAgICAgb3V0LnByaW50KCJSZWdpc3RlciIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBMb2NhdGlvbjo6SW5kaXJlY3Q6CisgICAgICAgIG91dC5wcmludCgiSW5kaXJlY3Qi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9jYXRpb246OkNvbnN0YW50OgorICAgICAg
ICBvdXQucHJpbnQoIkNvbnN0YW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNl
bmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG9jYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTExvY2F0aW9u
X2gKKyNkZWZpbmUgRlRMTG9jYXRpb25faAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJG
VExTdGFja01hcHMuaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBMb2NhdGlv
biB7CitwdWJsaWM6CisgICAgZW51bSBLaW5kIHsKKyAgICAgICAgVW5wcm9jZXNzZWQsCisgICAg
ICAgIFJlZ2lzdGVyLAorICAgICAgICBJbmRpcmVjdCwKKyAgICAgICAgQ29uc3RhbnQKKyAgICB9
OworICAgIAorICAgIExvY2F0aW9uKCkKKyAgICAgICAgOiBtX2tpbmQoVW5wcm9jZXNzZWQpCisg
ICAgeworICAgICAgICB1LmNvbnN0YW50ID0gMDsKKyAgICB9CisgICAgCisgICAgTG9jYXRpb24o
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fa2luZChVbnByb2Nl
c3NlZCkKKyAgICB7CisgICAgICAgIHUuY29uc3RhbnQgPSAxOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgTG9jYXRpb24gZm9yUmVnaXN0ZXIoaW50MTZfdCBkd2FyZlJlZ051bSkKKyAgICB7Cisg
ICAgICAgIExvY2F0aW9uIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFJlZ2lzdGVy
OworICAgICAgICByZXN1bHQudS52YXJpYWJsZS5kd2FyZlJlZ051bSA9IGR3YXJmUmVnTnVtOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTG9jYXRpb24g
Zm9ySW5kaXJlY3QoaW50MTZfdCBkd2FyZlJlZ051bSwgaW50MzJfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBJbmRpcmVj
dDsKKyAgICAgICAgcmVzdWx0LnUudmFyaWFibGUuZHdhcmZSZWdOdW0gPSBkd2FyZlJlZ051bTsK
KyAgICAgICAgcmVzdWx0LnUudmFyaWFibGUub2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTG9jYXRpb24gZm9yQ29uc3RhbnQo
aW50NjRfdCBjb25zdGFudCkKKyAgICB7CisgICAgICAgIExvY2F0aW9uIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fa2luZCA9IENvbnN0YW50OworICAgICAgICByZXN1bHQudS5jb25zdGFudCA9
IGNvbnN0YW50OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBM
b2NhdGlvbiBmb3JTdGFja21hcHMoY29uc3QgU3RhY2tNYXBzJiwgY29uc3QgU3RhY2tNYXBzOjpM
b2NhdGlvbiYpOworICAgIAorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQorICAgIAorICAgIGJvb2wgaGFzRHdhcmZSZWdOdW0oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gUmVnaXN0ZXIgfHwga2luZCgpID09IEluZGlyZWN0OyB9CisgICAgaW50MTZfdCBkd2FyZlJl
Z051bSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaGFzRHdhcmZSZWdOdW0oKSk7Cisg
ICAgICAgIHJldHVybiB1LnZhcmlhYmxlLmR3YXJmUmVnTnVtOworICAgIH0KKyAgICAKKyAgICBi
b29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBJbmRpcmVjdDsgfQorICAg
IGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNPZmZzZXQo
KSk7CisgICAgICAgIHJldHVybiB1LnZhcmlhYmxlLm9mZnNldDsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBoYXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBDb25zdGFudDsgfQor
ICAgIGludDY0X3QgY29uc3RhbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0Nv
bnN0YW50KCkpOworICAgICAgICByZXR1cm4gdS5jb25zdGFudDsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gVW5wcm9jZXNzZWQgJiYg
IXUudmFyaWFibGUub2Zmc2V0OyB9CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBVbnByb2Nlc3NlZCAmJiB1LnZhcmlhYmxl
Lm9mZnNldDsgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhdGlvbiYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVyLm1fa2luZAor
ICAgICAgICAgICAgJiYgdS5jb25zdGFudCA9PSBvdGhlci51LmNvbnN0YW50OworICAgIH0KKyAg
ICAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IG1fa2luZDsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAg
ICAgIGNhc2UgVW5wcm9jZXNzZWQ6CisgICAgICAgICAgICByZXN1bHQgXj0gdS52YXJpYWJsZS5v
ZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJlZ2lzdGVyOgorICAg
ICAgICAgICAgcmVzdWx0IF49IHUudmFyaWFibGUuZHdhcmZSZWdOdW07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEluZGlyZWN0OgorICAgICAgICAgICAg
cmVzdWx0IF49IHUudmFyaWFibGUuZHdhcmZSZWdOdW07CisgICAgICAgICAgICByZXN1bHQgXj0g
dS52YXJpYWJsZS5vZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIENvbnN0YW50OgorICAgICAgICAgICAgcmVzdWx0IF49IFdURjo6SW50SGFzaDxp
bnQ2NF90Pjo6aGFzaCh1LmNvbnN0YW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKKyAgICBib29sIGlzR1BSKCkgY29uc3Q7CisgICAgYm9vbCBpbnZvbHZlc0dQUigpIGNv
bnN0OworICAgIEdQUlJlZyBncHIoKSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzRlBSKCkgY29u
c3Q7CisgICAgRlBSUmVnIGZwcigpIGNvbnN0OworICAgIAorICAgIC8vIEFzc3VtaW5nIHRoYXQg
YWxsIHJlZ2lzdGVycyBhcmUgc2F2ZWQgdG8gdGhlIHNhdmVkUmVnaXN0ZXJzIGJ1ZmZlciBhY2Nv
cmRpbmcKKyAgICAvLyB0byBGVExTYXZlUmVzdG9yZSBjb252ZW50aW9uLCB0aGlzIGxvYWRzIHRo
ZSB2YWx1ZSBpbnRvIHRoZSBnaXZlbiByZWdpc3Rlci4KKyAgICAvLyBUaGUgY29kZSB0aGF0IHRo
aXMgZ2VuZXJhdGVzIGlzbid0IGV4YWN0bHkgc3VwZXIgZmFzdC4KKyAgICB2b2lkIHJlc3RvcmVJ
bnRvKE1hY3JvQXNzZW1ibGVyJiwgY2hhciogc2F2ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQp
IGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bmlvbiB7Cisg
ICAgICAgIGludDY0X3QgY29uc3RhbnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBp
bnQxNl90IGR3YXJmUmVnTnVtOworICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQ7CisgICAgICAg
IH0gdmFyaWFibGU7CisgICAgfSB1OworfTsKKworc3RydWN0IExvY2F0aW9uSGFzaCB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTG9jYXRpb24mIGtleSkgeyByZXR1cm4ga2V5Lmhh
c2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IExvY2F0aW9uJiBhLCBjb25zdCBM
b2NhdGlvbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTAorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgSlNDOjpGVEw6OkxvY2F0aW9uOjpLaW5kKTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlND
OjpGVEw6OkxvY2F0aW9uPiB7CisgICAgdHlwZWRlZiBKU0M6OkZUTDo6TG9jYXRpb25IYXNoIEhh
c2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpGVEw6OkxvY2F0aW9uPiA6IFNpbXBsZUNsYXNz
SGFzaFRyYWl0czxKU0M6OkZUTDo6TG9jYXRpb24+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZUTExvY2F0aW9uX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQxLDE3ICszMjQxLDE3IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGV4aXQgd2l0aCB2YWx1ZSBzb3VyY2VzOiAiLCBtX3Zh
bHVlU291cmNlcywgIlxuIik7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobV9mdGxTdGF0ZS5q
aXRDb2RlLT5vc3JFeGl0LnNpemUoKSA9PSBtX2Z0bFN0YXRlLm9zckV4aXQuc2l6ZSgpKTsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBtX2Z0bFN0YXRlLm9zckV4aXQuc2l6ZSgpOworICAgICAg
ICBBU1NFUlQobV9mdGxTdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LnNpemUoKSA9PSBtX2Z0bFN0YXRl
LmZpbmFsaXplci0+b3NyRXhpdC5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IG1f
ZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0LnNpemUoKTsKICAgICAgICAgCiAgICAgICAgIG1f
ZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5hcHBlbmQoT1NSRXhpdCgKICAgICAgICAgICAgIGtp
bmQsIGxvd1ZhbHVlLmZvcm1hdCgpLCBtX2dyYXBoLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGVGb3IoaGlnaFZhbHVlKSwKICAgICAgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRUYXJnZXQs
IG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLCBtX2xhc3RTZXRPcGVyYW5kLm9mZnNldCgpLAog
ICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMubnVtYmVyT2ZBcmd1bWVudHMoKSwgbV92YWx1ZVNv
dXJjZXMubnVtYmVyT2ZMb2NhbHMoKSkpOwotICAgICAgICBtX2Z0bFN0YXRlLm9zckV4aXQuYXBw
ZW5kKE9TUkV4aXRDb21waWxhdGlvbkluZm8oKSk7CisgICAgICAgIG1fZnRsU3RhdGUuZmluYWxp
emVyLT5vc3JFeGl0LmFwcGVuZChPU1JFeGl0Q29tcGlsYXRpb25JbmZvKCkpOwogICAgICAgICAK
ICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5sYXN0
KCk7Ci0gICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2Z0bFN0YXRlLm9z
ckV4aXQubGFzdCgpOworICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9m
dGxTdGF0ZS5maW5hbGl6ZXItPm9zckV4aXQubGFzdCgpOwogCiAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gMDsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gMDsKQEAg
LTM0OTMsNyArMzQ5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rT1NSRXhpdHNBbmRDb21w
bGV0ZUluaXRpYWxpemF0aW9uQmxvY2tzKCkKICAgICB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBvc3JFeGl0VGh1bmsgPQotICAgICAgICAgICAgdm0oKS5nZXRDVElTdHViKG9zckV4
aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOworICAgICAgICAgICAgdm0oKS5nZXRDVElTdHVi
KG9zckV4aXRHZW5lcmF0aW9uV2l0aG91dFN0YWNrTWFwVGh1bmtHZW5lcmF0b3IpOwogICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbCB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1
bmsuY29kZSgpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1fcHJvbG9ndWUp
OwpAQCAtMzUwNiwxMCArMzUwNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHZtKCks
ICZtX2V4aXRUaHVua0dlbmVyYXRvciwgbV9mdGxTdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywKICAg
ICAgICAgICAgICAgICBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIAotICAg
ICAgICAgICAgQVNTRVJUKG1fZnRsU3RhdGUub3NyRXhpdC5zaXplKCkgPT0gbV9mdGxTdGF0ZS5q
aXRDb2RlLT5vc3JFeGl0LnNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9mdGxTdGF0ZS5m
aW5hbGl6ZXItPm9zckV4aXQuc2l6ZSgpID09IG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5z
aXplKCkpOwogICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2Z0bFN0YXRlLm9zckV4aXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBPU1JFeGl0
Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9mdGxTdGF0ZS5vc3JFeGl0W2ldOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyYg
aW5mbyA9IG1fZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0W2ldOwogICAgICAgICAgICAgICAg
IE9TUkV4aXQmIGV4aXQgPSBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXRbaV07CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGluZm8ubV90aHVua0p1bXAs
IHRhcmdldCk7CkBAIC0zNTIyLDcgKzM1MjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGV4aXQubV9wYXRjaGFibGVDb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci0+b2Zmc2V0T2YoaW5mby5t
X3RodW5rSnVtcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAgICAgbV9mdGxT
dGF0ZS5maW5hbGl6ZXItPmluaXRpYWxpemVFeGl0VGh1bmtzTGlua0J1ZmZlcihsaW5rQnVmZmVy
LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2Z0bFN0YXRlLmZpbmFsaXplci0+ZXhpdFRodW5r
c0xpbmtCdWZmZXIgPSBsaW5rQnVmZmVyLnJlbGVhc2UoKTsKICAgICAgICAgfQogCiAgICAgICAg
IG1fb3V0Lmp1bXAobG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDE1NzIwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw5ICszOSwxNyBAQCBzdGF0aWMgc2l6ZV90IGJ5dGVzRm9yR1BScygpCiAg
ICAgcmV0dXJuIChNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCkgLSBNYWNyb0Fzc2VtYmxl
cjo6Zmlyc3RSZWdpc3RlcigpICsgMSkgKiBzaXplb2YoaW50NjRfdCk7CiB9CiAKK3N0YXRpYyBz
aXplX3QgYnl0ZXNGb3JGUFJzKCkKK3sKKyAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgd29ydGh3
aGlsZSBzYXZpbmcgdGhlIGZ1bGwgc3RhdGUgb2YgdGhlIEZQIHJlZ2lzdGVycywgYXQgc29tZSBw
b2ludC4KKyAgICAvLyBSaWdodCBub3cgd2UgZG9uJ3QgbmVlZCB0aGlzIHNpbmNlIHdlIG9ubHkg
ZG8gdGhlIHNhdmUvcmVzdG9yZSBqdXN0IHByaW9yIHRvIE9TUiBleGl0LCBhbmQKKyAgICAvLyBP
U1IgZXhpdCB3aWxsIGJlIGd1YXJhbnRlZWQgdG8gb25seSBuZWVkIHRoZSBkb3VibGUgcG9ydGlv
biBvZiB0aGUgRlAgcmVnaXN0ZXJzLgorICAgIHJldHVybiAoTWFjcm9Bc3NlbWJsZXI6Omxhc3RG
UFJlZ2lzdGVyKCkgLSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkgKyAxKSAqIHNp
emVvZihkb3VibGUpOworfQorCiBzaXplX3QgcmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0
ZXMoKQogewotICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIEZQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMgKiBzaXplb2YoZG91YmxlKTsKKyAgICByZXR1cm4gYnl0ZXNGb3JHUFJz
KCkgKyBieXRlc0ZvckZQUnMoKTsKIH0KIAogc2l6ZV90IG9mZnNldE9mR1BSKEdQUlJlZyByZWcp
CkBAIC00OSw2ICs1NywxMSBAQCBzaXplX3Qgb2Zmc2V0T2ZHUFIoR1BSUmVnIHJlZykKICAgICBy
ZXR1cm4gKHJlZyAtIE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpICogc2l6ZW9mKGlu
dDY0X3QpOwogfQogCitzaXplX3Qgb2Zmc2V0T2ZGUFIoRlBSUmVnIHJlZykKK3sKKyAgICByZXR1
cm4gYnl0ZXNGb3JHUFJzKCkgKyAocmVnIC0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpKSAqIHNpemVvZihkb3VibGUpOworfQorCiB2b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9B
c3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKIHsKICAgICAvLyBHZXQgdGhlIGZp
cnN0IHJlZ2lzdGVyIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgYXMgYSBw
b2ludGVyLgpAQCAtNjMsMjggKzc2LDIwIEBAIHZvaWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgamkKICAgICBqaXQucGVlazY0KE1hY3JvQXNzZW1ibGVyOjpzZWNvbmRSZWFsUmVn
aXN0ZXIoKSwgMCk7CiAgICAgaml0LnN0b3JlNjQoTWFjcm9Bc3NlbWJsZXI6OnNlY29uZFJlYWxS
ZWdpc3RlcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RS
ZWFsUmVnaXN0ZXIoKSwgb2Zmc2V0T2ZHUFIoTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVhbFJlZ2lz
dGVyKCkpKSk7CiAgICAgCi0gICAgLy8gU2F2ZSBhbGwgRlAgYXJndW1lbnQgcmVnaXN0ZXJzLgot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWN0dWFsbHkgYmUgc2F2aW5nIGFsbCBGUCByZWdpc3Rl
cnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjUx
OAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaE1lbW9yeSArIGJ5dGVzRm9yR1BScygpICsgc2l6ZW9mKGRvdWJsZSkg
KiBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6
dG9Bcmd1bWVudFJlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgfQorICAgIC8vIEZp
bmFsbHkgc2F2ZSBhbGwgRlBSJ3MuCisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIocmVnKSkKKyAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVhbFJlZ2lzdGVyKCksIG9mZnNldE9m
RlBSKHJlZykpKTsKIH0KIAogdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVy
JiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7Ci0gICAgLy8gUmVzdG9yZSBhbGwgRlAgYXJn
dW1lbnQgcmVnaXN0ZXJzLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWN0dWFsbHkgYmUgcmVz
dG9yaW5nIGFsbCBGUCByZWdpc3RlcnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMjUxOAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaE1lbW9yeSArIGJ5dGVzRm9yR1BS
cygpICsgc2l6ZW9mKGRvdWJsZSkgKiBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGkp
KTsKLSAgICB9Ci0gICAgCi0gICAgLy8gTm93LCByZXN0b3JlIGFsbCBHUFJzLgorICAgIC8vIEdp
dmUgb3Vyc2VsdmVzIGEgcG9pbnRlciB0byB0aGUgc2NyYXRjaCBtZW1vcnkuCiAgICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaE1lbW9yeSksIE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdFJlYWxSZWdpc3RlcigpKTsKICAgICAKKyAgICAvLyBSZXN0b3JlIGFsbCBG
UFIncy4KKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9B
c3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RG
UFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKQor
ICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RSZWFsUmVnaXN0ZXIoKSwgb2Zmc2V0T2ZGUFIocmVnKSksIHJlZyk7CisgICAg
CiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxl
cjo6c2Vjb25kUmVhbFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lz
dGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkKICAgICAgICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RS
ZWFsUmVnaXN0ZXIoKSwgb2Zmc2V0T2ZHUFIocmVnKSksIHJlZyk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCShyZXZpc2lvbiAxNTcyMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVk
ZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00MSw2ICs0Miw3IEBAIG5hbWVzcGFjZSBGVEwgewogc2l6ZV90IHJlcXVpcmVkU2NyYXRjaE1l
bW9yeVNpemVJbkJ5dGVzKCk7CiAKIHNpemVfdCBvZmZzZXRPZkdQUihHUFJSZWcpOworc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAKIC8vIEFzc3VtZXMgdGhhdCB0b3Atb2Ytc3RhY2sgY2Fu
IGJlIHVzZWQgYXMgYSBwb2ludGVyLXNpemVkIHNjcmF0Y2hwYWQuIFNhdmVzIGFsbCBvZgogLy8g
dGhlIHJlZ2lzdGVycyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlciBzdWNoIHRoYXQgUmVnaXN0ZXJJ
RCAqIHNpemVvZihpbnQ2NF90KSBpcyB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhY2tNYXBzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFN0YWNrTWFwcy5jcHAJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJGVExTYXZlUmVzdG9yZS5o
IgorI2luY2x1ZGUgIkZUTExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBA
IC03Myw4OCArNzMsMTEgQEAgdm9pZCBTdGFja01hcHM6OkxvY2F0aW9uOjpkdW1wKFByaW50U3Ry
ZQogICAgIG91dC5wcmludCgiKCIsIGtpbmQsICIsIHJlZyIsIGR3YXJmUmVnTnVtLCAiLCAiLCBv
ZmZzZXQsICIpIik7CiB9CiAKLWJvb2wgU3RhY2tNYXBzOjpMb2NhdGlvbjo6aW52b2x2ZXNHUFIo
KSBjb25zdAotewotICAgIHJldHVybiBpc0dQUigpIHx8IGtpbmQgPT0gSW5kaXJlY3Q7Ci19Ci0K
LSNpZiBDUFUoWDg2XzY0KSAvLyBDUFUgY2FzZXMgZm9yIFN0YWNrTWFwczo6TG9jYXRpb24KLS8v
IFRoaXMgZGVjb2RlcyBEd2FyZiBmbGF2b3VyIDAgZm9yIHg4Ni02NC4KLWJvb2wgU3RhY2tNYXBz
OjpMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAotewotICAgIHJldHVybiBraW5kID09IFJlZ2lzdGVy
ICYmIGR3YXJmUmVnTnVtIDwgMTY7Ci19Ci0KLUdQUlJlZyBTdGFja01hcHM6OkxvY2F0aW9uOjpn
cHIoKSBjb25zdAotewotICAgIC8vIFN0dXBpZGx5LCBEd2FyZiBkb2Vzbid0IG51bWJlciB0aGUg
cmVnaXN0ZXJzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgYXJjaGl0ZWN0dXJlOwotICAgIC8vIGZv
ciBleGFtcGxlLCB0aGUgYXJjaGl0ZWN0dXJlIGVuY29kZXMgQ1ggYXMgMSBhbmQgRFggYXMgMiB3
aGlsZSBEd2FyZiBkb2VzIHRoZQotICAgIC8vIG9wcG9zaXRlLiBIZW5jZSB3ZSBuZWVkIHRoZSBz
d2l0Y2guCi0gICAgCi0gICAgc3dpdGNoIChkd2FyZlJlZ051bSkgewotICAgIGNhc2UgMDoKLSAg
ICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgIGNhc2UgMToKLSAgICAgICAgcmV0
dXJuIFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIFg4NlJl
Z2lzdGVyczo6ZWN4OwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6
ZWJ4OwotICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNpOwotICAg
IGNhc2UgNToKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWRpOwotICAgIGNhc2UgNjoK
LSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgIGNhc2UgNzoKLSAgICAgICAg
cmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNwOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGR3YXJmUmVnTnVtIDwgMTYpOwotICAgICAgICAvLyBSZWdpc3RlcnMgcjguLnIxNSBh
cmUgbnVtYmVyZWQgc2Vuc2libHkuCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+
KGR3YXJmUmVnTnVtKTsKLSAgICB9Ci19Ci0KIHZvaWQgU3RhY2tNYXBzOjpMb2NhdGlvbjo6cmVz
dG9yZUludG8oCi0gICAgTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgU3RhY2tNYXBzJiBzdGFj
a21hcHMsIGNoYXIqIHNhdmVkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0KQorICAgIE1hY3JvQXNz
ZW1ibGVyJiBqaXQsIFN0YWNrTWFwcyYgc3RhY2ttYXBzLCBjaGFyKiBzYXZlZFJlZ2lzdGVycywg
R1BSUmVnIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoaXNHUFIoKSkgewotICAgICAgICBqaXQu
bG9hZDY0KHNhdmVkUmVnaXN0ZXJzICsgb2Zmc2V0T2ZHUFIoZ3ByKCkpLCByZXN1bHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2Ug
UmVnaXN0ZXI6Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgb3RoZXIg
cmVnaXN0ZXJzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyNTE4Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBJbmRpcmVjdDoKLSAgICAgICAgaml0Lmxv
YWQ2NChzYXZlZFJlZ2lzdGVycyArIG9mZnNldE9mR1BSKGdwcigpKSwgcmVzdWx0KTsKLSAgICAg
ICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDb25zdGFudDoKLSAg
ICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihvZmZzZXQpLCByZXN1
bHQpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgQ29uc3RhbnRJbmRleDoK
LSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChzdGFja21hcHMu
Y29uc3RhbnRzW29mZnNldF0uaW50ZWdlciksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgICAgCi0gICAgY2FzZSBVbnByb2Nlc3NlZDoKLSAgICAgICAgLy8gU2hvdWxkIG5ldmVyIHNl
ZSB0aGlzIC0gaXQncyBhbiBlbnVtZXJhdGlvbiBlbnRyeSBvbiBMTFZNJ3Mgc2lkZSB0aGF0IG1l
YW5zIHRoYXQKLSAgICAgICAgLy8gaXQgaGFzbid0IHByb2Nlc3NlZCB0aGlzIGxvY2F0aW9uLgot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgRlRMOjpM
b2NhdGlvbjo6Zm9yU3RhY2ttYXBzKHN0YWNrbWFwcywgKnRoaXMpLnJlc3RvcmVJbnRvKGppdCwg
c2F2ZWRSZWdpc3RlcnMsIHJlc3VsdCk7CiB9Ci0jZWxzZSAvLyBDUFUgY2FzZXMgZm9yIFN0YWNr
TWFwczo6TG9jYXRpb24KLSNlcnJvciAiQ1BVIGFyY2hpdGVjdHVyZSBub3Qgc3VwcG9ydGVkLiIK
LSNlbmRpZiAvLyBDUFUgY2FzZXMgZm9yIFN0YWNrTWFwczo6TG9jYXRpb24KIAogYm9vbCBTdGFj
a01hcHM6OlJlY29yZDo6cGFyc2UoRGF0YVZpZXcqIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNrTWFwcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgJKHJldmlzaW9u
IDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkRhdGFWaWV3LmgiCiAj
aW5jbHVkZSAiR1BSSW5mby5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDggKzQxLDcgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXI7CiBuYW1lc3BhY2UgRlRMIHsKIAogc3RydWN0IFN0YWNrTWFwcyB7Ci0g
ICAgdW5pb24gQ29uc3RhbnQgewotICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKKyAgICBz
dHJ1Y3QgQ29uc3RhbnQgewogICAgICAgICBpbnQ2NF90IGludGVnZXI7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIHBhcnNlKERhdGFWaWV3KiwgdW5zaWduZWQmIG9mZnNldCk7CkBAIC02NiwxNiAr
NjQsNyBAQCBzdHJ1Y3QgU3RhY2tNYXBzIHsKICAgICAgICAgdm9pZCBwYXJzZShEYXRhVmlldyos
IHVuc2lnbmVkJiBvZmZzZXQpOwogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CiAgICAgICAgIAotICAgICAgICBib29sIGlzR1BSKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgaW52b2x2ZXNHUFIoKSBjb25zdDsKLSAgICAgICAgR1BSUmVnIGdwcigpIGNvbnN0OwotICAg
ICAgICAKLSAgICAgICAgLy8gQXNzdW1pbmcgdGhhdCBhbGwgcmVnaXN0ZXJzIGFyZSBzYXZlZCB0
byB0aGUgc2F2ZWRSZWdpc3RlcnMgYnVmZmVyIGFjY29yZGluZwotICAgICAgICAvLyB0byBGVExT
YXZlUmVzdG9yZSBjb252ZW50aW9uLCB0aGlzIGxvYWRzIHRoZSB2YWx1ZSBpbnRvIHRoZSBnaXZl
biByZWdpc3Rlci4KLSAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCB0aGlzIGdlbmVyYXRlcyBpc24n
dCBleGFjdGx5IHN1cGVyIGZhc3QuCi0gICAgICAgIHZvaWQgcmVzdG9yZUludG8oCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlciYsIGNvbnN0IFN0YWNrTWFwcyYgc3RhY2ttYXBzLCBjaGFyKiBz
YXZlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHQpOworICAgICAgICB2b2lk
IHJlc3RvcmVJbnRvKE1hY3JvQXNzZW1ibGVyJiwgU3RhY2tNYXBzJiwgY2hhciogc2F2ZWRSZWdp
c3RlcnMsIEdQUlJlZyByZXN1bHQpIGNvbnN0OwogICAgIH07CiAgICAgCiAgICAgc3RydWN0IFJl
Y29yZCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCShyZXZpc2lvbiAx
NTcyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGVExHZW5lcmF0ZWRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKICNpbmNsdWRlICJGVExKSVRGaW5hbGl6ZXIuaCIK
LSNpbmNsdWRlICJGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgiCiAjaW5jbHVkZSAiRlRMU3Rh
Y2tNYXBzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTU1LDcgKzU0LDYg
QEAgcHVibGljOgogICAgIExNb2R1bGUgbW9kdWxlOwogICAgIExWYWx1ZSBmdW5jdGlvbjsKICAg
ICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKLSAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9u
SW5mbz4gb3NyRXhpdDsKICAgICBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbjsK
ICAgICBKSVRGaW5hbGl6ZXIqIGZpbmFsaXplcjsKICAgICBWZWN0b3I8Q1N0cmluZz4gY29kZVNl
Y3Rpb25OYW1lczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJ
KHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMjEgKzM5LDE3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNlIERGRzsKIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uV2l0aG91dFN0YWNrTWFwVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogewogICAgIEFzc2VtYmx5SGVscGVycyBqaXQodm0sIDApOwogICAgIAotICAg
IC8vIE5vdGUgdGhhdCBpbiB0aGUgZnRsT1NSRXhpdFVzZXNTdGFja21hcCgpIGNhc2UsIHRoZSAi
cmV0dXJuIGFkZHJlc3MiIHdpbGwgYmUgdGhlCi0gICAgLy8gT1NSIGV4aXQgSUQuCi0gICAgCiAg
ICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgogICAgIGppdC5wdXNoKE1h
Y3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOwogICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQucHVz
aChHUFJJbmZvOjpyZWdUMCk7CiAgICAgCi0gICAgaWYgKCFPcHRpb25zOjpmdGxPU1JFeGl0VXNl
c1N0YWNrbWFwKCkpCi0gICAgICAgIGppdC5wb2tlKEdQUkluZm86Om5vbkFyZ0dQUjAsIDEpOwor
ICAgIGppdC5wb2tlKEdQUkluZm86Om5vbkFyZ0dQUjAsIDEpOwogICAgIAogICAgIFNjcmF0Y2hC
dWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUocmVxdWlyZWRT
Y3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CkBAIC02NSwxMCArNjEsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAgICAgaml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNp
emVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKIAogICAgIC8vIGFyZ3VtZW50IDAg
aXMgYWxyZWFkeSB0aGUgY2FsbCBmcmFtZS4KLSAgICBpZiAoT3B0aW9uczo6ZnRsT1NSRXhpdFVz
ZXNTdGFja21hcCgpKQotICAgICAgICBqaXQucGVlayhHUFJJbmZvOjphcmd1bWVudEdQUjEsIDMp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnBlZWsoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAxKTsK
KyAgICBqaXQucGVlayhHUFJJbmZvOjphcmd1bWVudEdQUjEsIDEpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKCk7CiAgICAgCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSB3YW50IHRvIG1ha2UgYSB0YWlsIGNhbGwgdG8gd2hhdCB3YXMgcmV0dXJuZWQg
dG8gdXMgaW4gdGhlCkBAIC05OCw2ICs5MSw1OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdEdlbmVyYXRpb25UCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgi
RlRMIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBvc3JFeGl0R2VuZXJhdGlvbldpdGhTdGFja01hcFRodW5rR2VuZXJhdG9yKAorICAgIFZN
JiB2bSwgY29uc3QgTG9jYXRpb24mIGxvY2F0aW9uKQoreworICAgIEFzc2VtYmx5SGVscGVycyBq
aXQoJnZtLCAwKTsKKyAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVzcyIg
d2lsbCBiZSB0aGUgT1NSIGV4aXQgSUQuCisgICAgCisgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3Jl
IGEgQyBjYWxsIGZyYW1lLgorICAgIGppdC5wdXNoKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50
ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5w
dXNoKEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQucHVzaChHUFJJbmZvOjpyZWdUMCk7CisgICAg
CisgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JT
aXplKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpOworICAgIGNoYXIqIGJ1ZmZl
ciA9IHN0YXRpY19jYXN0PGNoYXIqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOworICAg
IAorICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOworICAgIAorICAgIC8vIFRlbGwg
R0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1
cmluZyBjYWxsLgorICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7Cisg
ICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2Ny
YXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKworICAgIGxv
Y2F0aW9uLnJlc3RvcmVJbnRvKGppdCwgYnVmZmVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIGppdC5wZWVrKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgMyk7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoKTsKKyAgICAKKyAgICAvLyBBdCB0aGlz
IHBvaW50IHdlIHdhbnQgdG8gbWFrZSBhIHRhaWwgY2FsbCB0byB3aGF0IHdhcyByZXR1cm5lZCB0
byB1cyBpbiB0aGUKKyAgICAvLyByZXR1cm5WYWx1ZUdQUi4gQnV0IGF0IHRoZSBzYW1lIHRpbWUg
YXMgd2UgZG8gdGhpcywgd2UgbXVzdCByZXN0b3JlIGFsbCByZWdpc3RlcnMuCisgICAgLy8gVGhl
IHdheSB3ZSB3aWxsIGFjY29tcGxpc2ggdGhpcyBpcyBieSBhcnJhbmdpbmcgdG8gaGF2ZSB0aGUg
dGFpbCBjYWxsIHRhcmdldCBpbiB0aGUKKyAgICAvLyByZXR1cm4gYWRkcmVzcyAic2xvdCIgKGJl
IGl0IGEgcmVnaXN0ZXIgb3IgdGhlIHN0YWNrKS4KKyAgICAKKyAgICBqaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDApOworICAgIAorICAgIC8vIFByZXBhcmUg
Zm9yIHRhaWwgY2FsbC4KKyAgICBqaXQucG9wKEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQucG9w
KEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQucG9wKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50
ZXJSZWdpc3Rlcik7CisgICAgCisgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBzaXR0aW5nIG9u
IHRoZSByZXR1cm4gYWRkcmVzcyAtIHNvIGlmIHdlIGRpZCBhIGp1bXAgcmlnaHQgbm93LCB0aGUK
KyAgICAvLyB0YWlsLWNhbGxlZSB3b3VsZCBiZSBoYXBweS4gSW5zdGVhZCB3ZSdsbCBzdGFzaCB0
aGUgY2FsbGVlIGluIHRoZSByZXR1cm4gYWRkcmVzcyBhbmQgdGhlbgorICAgIC8vIHJlc3RvcmUg
YWxsIHJlZ2lzdGVycy4KKyAgICAKKyAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oR1BSSW5mbzo6cmVnVDApOworICAgIAorICAgIHJlc3RvcmVBbGxSZWdpc3RlcnMoaml0
LCBidWZmZXIpOworCisgICAgaml0LnJldCgpOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhm
dW5jdGlvbkNhbGwsIGNvbXBpbGVGVExPU1JFeGl0KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgKCJGVEwgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayBmb3IgY2FsbEZy
YW1lIGF0ICVzIiwgdG9DU3RyaW5nKGxvY2F0aW9uKS5kYXRhKCkpKTsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDkgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiRlRMTG9jYXRpb24u
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzgsNyArNDAsMzQgQEAgY2xhc3MgVk07
CiAKIG5hbWVzcGFjZSBGVEwgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRH
ZW5lcmF0aW9uV2l0aG91dFN0YWNrTWFwVGh1bmtHZW5lcmF0b3IoVk0qKTsKKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uV2l0aFN0YWNrTWFwVGh1bmtHZW5lcmF0b3Io
Vk0mLCBjb25zdCBMb2NhdGlvbiYpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGdlbmVyYXRlSWZOZWNlc3NhcnkoCisgICAgVk0mIHZtLCBNYXBUeXBlJiBtYXAsIGNvbnN0
IEtleVR5cGUmIGtleSwgR2VuZXJhdG9yVHlwZSBnZW5lcmF0b3IpCit7CisgICAgdHlwZW5hbWUg
TWFwVHlwZTo6aXRlcmF0b3IgaXRlciA9IG1hcC5maW5kKGtleSk7CisgICAgaWYgKGl0ZXIgIT0g
bWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHJlc3VsdCA9IGdlbmVyYXRvcih2bSwga2V5KTsKKyAgICBtYXAuYWRk
KGtleSwgcmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjbGFzcyBUaHVua3Mgewor
cHVibGljOgorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZXRPU1JFeGl0R2VuZXJhdGlvblRo
dW5rKFZNJiB2bSwgY29uc3QgTG9jYXRpb24mIGxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdlbmVyYXRlSWZOZWNlc3NhcnkoCisgICAgICAgICAgICB2bSwgbV9vc3JFeGl0VGh1bmtz
LCBsb2NhdGlvbiwgb3NyRXhpdEdlbmVyYXRpb25XaXRoU3RhY2tNYXBUaHVua0dlbmVyYXRvcik7
CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBIYXNoTWFwPExvY2F0aW9uLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY+IG1fb3NyRXhpdFRodW5rczsKK307CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpGVEwKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24g
MTU3MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlckFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCisj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgpAQCAtMjU0LDYgKzI1NSwxMCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKCkpOwogICAgIHBl
cmZvcm1QbGF0Zm9ybVNwZWNpZmljSklUQXNzZXJ0aW9ucyh0aGlzKTsKICNlbmRpZgorCisjaWYg
RU5BQkxFKEZUTF9KSVQpCisgICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRo
dW5rcz4oKTsKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAKICAgICBpbnRlcnByZXRl
ci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NzIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtz
LmgiCi0jaW5jbHVkZSAiSklUVGh1bmtzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgpAQCAtOTksNiArOTgsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgV29ya2xpc3Q7CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShGVExfSklUKQorICAgIG5hbWVzcGFjZSBGVEwg
eworICAgIGNsYXNzIFRodW5rczsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAK
ICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKQEAgLTMyNyw2
ICszMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1
bmtzPiBmdGxUaHVua3M7CisjZW5kaWYKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7CiAK
ICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQo=
</data>
<flag name="review"
          id="236384"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>