<?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>115084</bug_id>
          
          <creation_ts>2013-04-23 21:27:16 -0700</creation_ts>
          <short_desc>fourthTier: AbstractValue methods that deal with watchpoints should have access to Graph, so that in debug mode, Graph can track the history of watchpoint states and detect races</short_desc>
          <delta_ts>2013-04-24 18:31:13 -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>115083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>880317</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-23 21:27:16 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880319</commentid>
    <comment_count>1</comment_count>
      <attachid>199385</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-23 21:30:30 -0700</bug_when>
    <thetext>Created attachment 199385
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880884</commentid>
    <comment_count>2</comment_count>
      <attachid>199385</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-24 17:00:25 -0700</bug_when>
    <thetext>Comment on attachment 199385
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880981</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-24 18:31:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/149085</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199385</attachid>
            <date>2013-04-23 21:30:30 -0700</date>
            <delta_ts>2013-04-24 17:00:25 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41290</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MDE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEzLTA0LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQWJzdHJhY3RWYWx1ZSBtZXRob2RzIHRoYXQgZGVhbCB3aXRoIHdhdGNocG9p
bnRzIHNob3VsZCBoYXZlIGFjY2VzcyB0byBHcmFwaCwgc28gdGhhdCBpbiBkZWJ1ZyBtb2RlLCBH
cmFwaCBjYW4gdHJhY2sgdGhlIGhpc3Rvcnkgb2Ygd2F0Y2hwb2ludCBzdGF0ZXMgYW5kIGRldGVj
dCByYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE1MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTA4MywgSSdsbCBoYXZlCisgICAgICAgIEdyYXBoIHJlY29y
ZCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBhIHdhdGNocG9pbnQgYXQgdGhlIHRpbWUgdGhhdCB3ZSBk
ZWNpZGUgdG8gdGFrZQorICAgICAgICBhZHZhbnRhZ2Ugb2YgaXQ7IHRoZW4gSSB3aWxsIHVzZSB0
aGlzIHRvIGRpc2FibGUgYW55IHdhdGNocG9pbnQtcmVsYXRlZCBhc3NlcnRpb25zCisgICAgICAg
IGluIGRlYnVnIG1vZGUuIE5vdGUgdGhhdCB0aGlzICJ3YXRjaHBvaW50IGNhY2hlIiB3aWxsIG9u
bHkgYmUgbWFpbnRhaW5lZCBpbiBkZWJ1ZworICAgICAgICBtb2RlLCBzbyB0aGVyZSB3aWxsIGJl
IG5vIHJlbGVhc2UgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBCdXQgdG8gZG8gdGhpcywgSSBu
ZWVkIHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGFsbCBvZiB0aGUgcGxhY2VzIHRoYXQgcmVhc29u
IGFib3V0IHdhdGNocG9pbnRzIGhhdmUgYWNjZXNzIHRvIEdyYXBoLgorICAgICAgICBGb3IgZXhh
bXBsZSwgSSdsbCB3YW50IEFic3RyYWN0VmFsdWU6OnNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJl
IHRvIHJlY29yZCB0aGUgc3RhdGUKKyAgICAgICAgb2YgdGhlIHdhdGNocG9pbnQgaW4gR3JhcGgg
c28gdGhhdCBzdWJzZXF1ZW50IGFzc2VydGlvbnMgY2FuIGNoZWNrIGlmIHRoZSB3YXRjaHBvaW50
J3MKKyAgICAgICAgc3RhdGUgaGFkIGNoYW5nZWQgc2luY2UgdGhhdCBkZWNpc2lvbiB3YXMgbWFk
ZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRl
OjptZXJnZVN0YXRlQXRUYWlsKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OnRyeVNldENvbnN0YW50KToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXRNb3N0U3BlY2lmaWMpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpz
ZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RW
YWx1ZTo6ZmlsdGVyRnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6
CisgICAgICAgIChERkcpOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZTo6c2V0VHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6ZmlsdGVyQnlWYWx1ZSk6CisKIDIwMTMtMDQtMjIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBDcmVhdGUgYW4gZXF1aXZhbGVu
dCBvZiBTdHJ1Y3R1cmU6OmdldCgpIHRoYXQgY2FuIHdvcmsgZnJvbSBhIGNvbXBpbGF0aW9uIHRo
cmVhZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTAxNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDcgQEAKIAkJMEY0OTNBRkEx
NkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBT
b3VyY2VQcm92aWRlci5jcHAgKi87IH07CiAJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBT
cGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICov
OyB9OwogCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUIwMTYxM0Mx
RkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNTVDMTk0MTcyNzZFNDYwMENFQUJGRCAvKiBERkdB
YnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNTVDMTkzMTcyNzZFNDYwMENFQUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAq
LzsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjExNEQxMDYz
NjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkwRjU1RjBGNTE0RDEwNjNDMDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU2QTFEMzE1
MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4
ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTEzMCw2ICsxMTMxLDcgQEAKIAkJMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhC
IC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2lu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTVDMTkzMTcyNzZFNDYwMENFQUJGRCAv
KiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
YnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjIxNEQx
MDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2QTFE
MTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25Db3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yODA0LDYgKzI4MDYsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEY2MjAx
NkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovLAogCQkJCTBGNjIw
MTZFMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmggKi8sCisJCQkJMEY1NUMx
OTMxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovLAogCQkJCTBGNjIw
MTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi8sCiAJCQkJMEY2NkUx
NjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLywKIAkJCQkwRkI0QjUx
OTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8sCkBAIC00MDk2LDYgKzQwOTks
NyBAQAogCQkJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODU1MTA3RUMwRTcwMDEzRTdCMiAvKiBHZXR0ZXJTZXR0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRTMxMzUxMzRGRjBBNjAwQUZBREI1IC8qIEhh
bmRsZVNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjU1QzE5NDE3Mjc2RTQ2MDBDRUFCRkQg
LyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJFMzEzNzEzNEZG
MEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCQTdB
OTcxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0RDMx
RTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
CShyZXZpc2lvbiAxNDkwMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgsMTEgQEAgdm9pZCBBYnN0
cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0KICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1
bWVudEF3YXJlUHJlZGljdGlvbigpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNl
dChTcGVjSW50MzIpOworICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkuc2V0KFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKICAgICAgICAgZWxzZSBpZiAoaXNDZWxsU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0KFNwZWNDZWxsKTsKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXRUeXBlKFNwZWNDZWxsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VUb3AoKTsKICAgICAgICAgCkBAIC0x
MzksNyArMTM5LDcgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3Jh
cGgubV9tdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlIHZhbHVlOwotICAgICAgICAgICAgdmFsdWUuc2V0TW9zdFNwZWNpZmljKGdyYXBoLm1f
bXVzdEhhbmRsZVZhbHVlc1tpXSk7CisgICAgICAgICAgICB2YWx1ZS5zZXRNb3N0U3BlY2lmaWMo
Z3JhcGgsIGdyYXBoLm1fbXVzdEhhbmRsZVZhbHVlc1tpXSk7CiAgICAgICAgICAgICBpbnQgb3Bl
cmFuZCA9IGdyYXBoLm1fbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CiAgICAg
ICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCkubWVyZ2UodmFsdWUp
OwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKQEAgLTI3OCw3ICsy
NzgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgY2Fz
ZSBKU0NvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFudG9t
QXJndW1lbnRzOiB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgudmFsdWVPZkpT
Q29uc3RhbnQobm9kZSkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dy
YXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKQEAgLTM3NCw3ICszNzQsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC0zODgsOSArMzg4LDkgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0
cyh1bnNpZwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghbm9kZS0+Y2Fu
U3BlY3VsYXRlSW50ZWdlcigpKQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0Rv
dWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAg
ICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTQwOCw3ICs0MDgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVl
KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWcKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00Mzks
OSArNDM5LDkgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQoU3BlY0RvdWJsZVJlYWwpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0RvdWJsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00NTYsMjgg
KzQ1NiwyOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAg
ICAgIH0KICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKICAgICAgICAg
Y2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNJbnQzMik7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAg
ICAgIGlmICghbm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJl
clNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKICAgICAgICAgICAg
ICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5t
X3R5cGUpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNEb3VibGVSZWFs
KTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNw
ZWNEb3VibGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAgICAgICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjTnVtYmVyKTsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0ludDMyIHwg
U3BlY051bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTWFrZVJvcGU6IHsKLSAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXQobV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAg
ICAgfQogICAgICAgICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewogICAgICAgICBj
YXNlIEludDMyVXNlOgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAg
ICAgaWYgKCFub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dChTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUxNCwxMiArNTE0LDEyIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgfQogICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNl
OgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgaWYgKCFub2Rl
Q2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjRG91Ymxl
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUzOCw3ICs1MzgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChub2RlLT5i
aW5hcnlVc2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGlmICghbm9kZUNhblRydW5jYXRlSW50ZWdl
cihub2RlLT5hcml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAgICAgIHx8ICFub2RlQ2FuSWdu
b3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CkBAIC01NDYsOSArNTQ2LDkgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAg
ICAgICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUpCiAgICAgICAgICAgICAgICAgfHwgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24o
Zm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldChTcGVjRG91YmxlUmVhbCk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01OTIsMTEgKzU5MiwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnCiAgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsK
ICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNw
ZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsK
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChT
cGVjRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91Ymxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTYxNCwxMSArNjE0LDExIEBAIGJvb2wgQWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgfQogICAgICAgICBzd2l0
Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgot
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToK
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNEb3VibGUpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjM0LDcgKzYzNCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWcKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0RvdWJsZSk7
CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC02NjcsNyArNjY3LDcgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KFNwZWNCb29sZWFuKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTcx
OSw3ICs3MTksNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVj
Qm9vbGVhbik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzc2LDcgKzc3Niw3IEBAIGJvb2wgQWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtODI5LDcg
KzgyOSw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChTcGVjQm9vbGVhbik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQm9v
bGVhbik7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIG92ZXJseSBjb25zZXJ2YXRpdmUu
IEJ1dCB0aGUgb25seSB0aGluZyB0aGlzIHByZXZlbnRzIGlzIHN0b3JlIGVsaW1pbmF0aW9uLAog
ICAgICAgICAvLyBhbmQgaG93IGxpa2VseSBpcyBpdCwgcmVhbGx5LCB0aGF0IHlvdSdsbCBoYXZl
IHJlZHVuZGFudCBzdG9yZXMgYWNyb3NzIGEgY29tcGFyaXNvbgpAQCAtODUyLDE5ICs4NTIsMTkg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAg
bV9mb3VuZENvbnN0YW50cyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjQm9vbGVhbik7CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7IC8vIFRoaXMgaXMgb3Zlcmx5IGNvbnNlcnZhdGl2ZS4KICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNJbnQzMik7Cisg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsK
ICAgICAgICAgCiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgubV92bS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dy
YXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICBjYXNlIEdldEJ5VmFsOiB7CkBAIC04ODMsNyArODgzLDcgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5tYWtlVG9wKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6U3Ry
aW5nOgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaC5tX3ZtLnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBt
X2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUp
Lm1ha2VUb3AoKTsKQEAgLTg5MywxNiArODkzLDE2IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29k
ZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1h
a2VUb3AoKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkg
ewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBpbmRleElu
QmxvY2spOwogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQotICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjRG91YmxlUmVhbCk7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICBjYXNl
IEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC05MTIsMzQgKzkxMiwzNCBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1h
a2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJy
YXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjSW50MzIpOworICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6SW50MTZBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFy
cmF5OgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6VWludDhD
bGFtcGVkQXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjSW50MzIpOwor
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJh
eTo6VWludDMyQXJyYXk6CiAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNJbnQzMik7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0RvdWJsZSk7
CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKLSAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KFNwZWNEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTg0LDcgKzk4NCw3IEBAIGJvb2wgQWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICBjYXNlIEFycmF5UHVzaDoKICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
PmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNw
ZWNOdW1iZXIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBBcnJheVBvcDoKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAg
ICAgICAgICAgIHR5cGUgJj0gKFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4p
OwogICAgICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIGRl
c3RpbmF0aW9uLnNldCh0eXBlKTsKKyAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSh0eXBlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTEwODAsNyArMTA4MCw4IEBAIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgY2FzZSBTdHJp
bmdPYmplY3RVc2U6CiAgICAgICAgICAgICAvLyBUaGlzIGFsc28gZmlsdGVycyB0aGF0IHRoZSBT
dHJpbmdPYmplY3QgaGFzIHRoZSBwcmltb3JkaWFsIFN0cmluZ09iamVjdAogICAgICAgICAgICAg
Ly8gc3RydWN0dXJlLgotICAgICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuZmlsdGVy
KG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5maWx0ZXIo
CisgICAgICAgICAgICAgICAgbV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7IC8vIFdlIGNvdWxkIGJlIG1vcmUgcHJlY2lzZSBidXQgaXQncyBs
aWtlbHkgbm90IHdvcnRoIGl0LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3Ry
aW5nT3JTdHJpbmdPYmplY3RVc2U6CkBAIC0xMDk0LDM2ICsxMDk1LDQwIEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPnN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmU3RyaW5nT2JqZWN0OjpzX2luZm8pOwotICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3Jh
cGgsIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAg
ICAgCiAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsK
LSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
Y29kZU9yaWdpbiktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAg
ICAgICAgICAgIG1fZ3JhcGgsCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5jb2RlT3JpZ2luKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAgICAgIG1fZ3JhcGgsCisg
ICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKS0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5n
VHlwZSgpKSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0FycmF5KTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNBcnJheSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVy
ZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgTmV3UmVn
ZXhwOgotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5jb2RlT3JpZ2luKS0+cmVnRXhwU3RydWN0dXJlKCkpOworICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2lu
KS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTExMzcsNyArMTE0Miw3IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICB9CiAKICAgICBjYXNlIENy
ZWF0ZVRoaXM6IHsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ZpbmFsT2JqZWN0KTsK
KyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNGaW5hbE9iamVjdCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xMTQ2LDE3ICsxMTUxLDE5IEBAIGJvb2wgQWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIE5ld09iamVjdDoKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobm9kZS0+c3RydWN0dXJl
KCkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmUo
KSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICAgICAgCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgotICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5hY3Rp
dmF0aW9uU3RydWN0dXJlKCkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAg
ICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdp
biktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0
cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6
Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+Y29kZU9yaWdpbiktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXQoCisgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0x
MTc5LDEwICsxMTg2LDExIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5z
aWcKICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBhIGJpdC4gTm90ZSB0aGF0IHRoaXMgaXMgbm90
IHN1ZmZpY2llbnQgdG8gZm9yY2UgY29uc3RhbnQgZm9sZGluZwogICAgICAgICAvLyBvZiBHZXRN
eUFyZ3VtZW50c0xlbmd0aCwgYmVjYXVzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aCBpcyBhIGNsb2Ji
ZXJpbmcgb3BlcmF0aW9uLgogICAgICAgICAvLyBXZSBwZXJmb3JtIGZ1cnRoZXIgb3B0aW1pemF0
aW9ucyBvbiB0aGlzIGxhdGVyIG9uLgotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChqc051bWJlcihub2Rl
LT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAg
ICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBqc051bWJlcihu
b2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDMyKTsKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCgKICAgICAgICAgICAgICFpc0VtcHR5U3Bl
Y3VsYXRpb24oCiAgICAgICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZCgKQEAgLTEyMTgs
MTEgKzEyMjYsMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwog
ICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbkV4cHJlc3Npb246CiAg
ICAgY2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmZ1bmN0aW9uU3Ry
dWN0dXJlKCkpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAgICAgIG1fZ3Jh
cGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmZ1bmN0
aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRD
YWxsZWU6Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNGdW5jdGlvbik7CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRnVuY3Rpb24pOwogICAgICAgICBicmVhazsKICAg
ICAgICAgCiAgICAgY2FzZSBTZXRDYWxsZWU6CkBAIC0xMjMyLDcgKzEyNDEsNyBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgY2FzZSBHZXRTY29wZTogLy8g
RklYTUU6IFdlIGNvdWxkIGdldCByaWQgb2YgdGhlc2UgaWYgd2Uga25vdyB0aGF0IHRoZSBKU0Z1
bmN0aW9uIGlzIGEgY29uc3RhbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDYyMDIKICAgICBjYXNlIEdldE15U2NvcGU6CiAgICAgY2FzZSBTa2lwVG9wU2NvcGU6
Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNDZWxsT3RoZXIpOworICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTa2lwU2NvcGU6IHsKQEAgLTEyNDEsNyArMTI1MCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0
ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQoU3BlY0NlbGxPdGhlcik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
Q2VsbE90aGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMjc2LDEwICsxMjg1LDEw
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnNwZWNpZmljVmFsdWUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KHN0YXR1cy5zcGVjaWZp
Y1ZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9n
cmFwaCwgc3RhdHVzLnNwZWNpZmljVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOwotICAgICAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5maWx0ZXIoc3RhdHVzLnN0cnVj
dHVyZVNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
ZmlsdGVyKG1fZ3JhcGgsIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkyLDcgKzEzMDEsNyBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBMaWVzLCBidXQg
aXQncyB0cnVlIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgSlNBcnJheSwgc28gaXQncyBnb29kIGVu
b3VnaC4KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAK
ICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewpAQCAtMTMxOCw3ICsxMzI3LDcgQEAgYm9vbCBB
YnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgbV9mb3VuZENv
bnN0YW50cyA9IHRydWU7CiAgICAgICAgIGlmICghdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1
cmUuaXNTdWJzZXRPZihzZXQpKQogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsK
LSAgICAgICAgdmFsdWUuZmlsdGVyKHNldCk7CisgICAgICAgIHZhbHVlLmZpbHRlcihtX2dyYXBo
LCBzZXQpOwogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTMzNSw3ICsxMzQ0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
RWZmZWN0cyh1bnNpZwogICAgICAgICAvLyBpbmZpbml0eSBvZiBzdHJ1Y3R1cmVzLgogICAgICAg
ICBBU1NFUlQodmFsdWUubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVj
dHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgCi0gICAgICAgIHZhbHVlLmZp
bHRlcihub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHZhbHVlLmZpbHRlcihtX2dyYXBoLCBu
b2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAg
ICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBicmVhazsKQEAgLTEzNDUsNyAr
MTM1NCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICBj
YXNlIFBoYW50b21QdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGlmICghZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpKSB7CiAgICAgICAgICAgICBj
bG9iYmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkuc2V0KG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0
dXJlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnNldChtX2dyYXBoLCBu
b2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAg
ICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTE0MjksNyArMTQzOCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5z
aWcKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwogICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBjbG9iYmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2sp
OwotICAgICAgICB2YWx1ZS5maWx0ZXIoc2V0KTsKKyAgICAgICAgdmFsdWUuZmlsdGVyKG1fZ3Jh
cGgsIHNldCk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xNDU1LDEwICsxNDY0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlRWZmZWN0cyh1bnNpZwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOyAvLyBMaWVzISBXZSBjYW4gZG8gYmV0dGVyLgotICAgICAgICBpZiAoIWZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLmZpbHRlckJ5VmFsdWUobm9kZS0+ZnVuY3Rpb24oKSkpIHsK
LSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuZmlsdGVyQnlWYWx1ZShub2Rl
LT5mdW5jdGlvbigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE0NzMs
MTMgKzE0NzksMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwog
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9jb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWRE
aXJlY3QpOwogICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSkgewotICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmZpbHRlcihzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmZpbHRlcihtX2dyYXBoLCBz
dHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHN0YXR1
cy5pc1NpbXBsZVRyYW5zaXRpb24oKSkgewogICAgICAgICAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1
cmVzKGluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkuc2V0KHN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkuc2V0KG1fZ3JhcGgsIHN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgbV9m
b3VuZENvbnN0YW50cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTA4LDcg
KzE1MTQsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAg
Y2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAg
ICAvLyBBZ2Fpbiwgc2FkbHksIHdlIGRvbid0IHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlJ3Zl
IGRvbmUgSW5zdGFuY2VPZgotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChTcGVjQm9vbGVhbik7
CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQaGk6CkBAIC0xNjYyLDcgKzE2NjgsNyBAQCBp
bmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgICAgICAvLyBi
ZWZvcmUgYW5kIGFmdGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdW5uZWNlc3NhcmlseSBsb3NlcyBwcmVjaXNpb24uCi0gICAgICAg
ICAgICAgICAgc291cmNlLnNldChTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICBzb3VyY2Uu
c2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5oCShyZXZpc2lvbiAxNDkwMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhzcGVjdWxhdGlv
bkZyb21WYWx1ZSh2YWx1ZSksIG9sZFR5cGUpICE9IG9sZFR5cGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCh2YWx1ZSk7Cisg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIEFic3RyYWN0
VmFsdWU6OnNldE1vc3RTcGVjaWZpYyhHcmFwaCYgZ3JhcGgsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIG1fY3VycmVu
dEtub3duU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgICAgICBzZXRGdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZShncmFwaCwgc3RydWN0dXJlKTsKKyAgICAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fY3VycmVudEtub3duU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIG1fZnV0dXJlUG9zc2li
bGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgbV9hcnJheU1vZGVzID0gMDsKKyAgICB9Cisg
ICAgICAgIAorICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICBt
X3ZhbHVlID0gdmFsdWU7CisgICAgICAgIAorICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKK30KKwor
dm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKU1ZhbHVlIHZhbHVlKQorewor
ICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgIG1fY3VycmVudEtu
b3duU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIHNldEZ1dHVyZVBvc3NpYmxlU3Ry
dWN0dXJlKGdyYXBoLCBzdHJ1Y3R1cmUpOworICAgICAgICBtX2FycmF5TW9kZXMgPSBhc0FycmF5
TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIGNsb2JiZXJBcnJheU1v
ZGVzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgICAg
ICBtX2FycmF5TW9kZXMgPSAwOworICAgIH0KKyAgICAgICAgCisgICAgbV90eXBlID0gc3BlY3Vs
YXRpb25Gcm9tVmFsdWUodmFsdWUpOworICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgCisg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFw
aCYgZ3JhcGgsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIG1fY3VycmVudEtub3duU3Ry
dWN0dXJlID0gc3RydWN0dXJlOworICAgIHNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKGdyYXBo
LCBzdHJ1Y3R1cmUpOworICAgIG1fYXJyYXlNb2RlcyA9IGFzQXJyYXlNb2RlcyhzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpKTsKKyAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUo
c3RydWN0dXJlKTsKKyAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOworICAgICAgICAKKyAgICBjaGVj
a0NvbnNpc3RlbmN5KCk7Cit9CisKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBn
cmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBj
b3VsZCBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBtX3R5cGUgbm90CisgICAg
Ly8gaGF2aW5nIHN0cnVjdHVyZXMsIGFycmF5IG1vZGVzLCBvciBhIHNwZWNpZmljIHZhbHVlLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2NjMKKyAg
ICBtX3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpOworICAgIG1fYXJy
YXlNb2RlcyAmPSBvdGhlci5hcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKTsKKyAgICBtX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5maWx0ZXIob3RoZXIpOworICAgIGlmIChtX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5pc0NsZWFyKCkpCisgICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICBlbHNlIGlmIChtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24o
KSkKKyAgICAgICAgZmlsdGVyRnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUoZ3JhcGgsIG1fY3VycmVu
dEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpKTsKKyAgICAgICAgCisgICAgLy8gSXQncyBwb3Nz
aWJsZSB0aGF0IHByaW9yIHRvIHRoZSBhYm92ZSB0d28gc3RhdGVtZW50cyB3ZSBoYWQgKEZvbywg
VE9QKSwgd2hlcmUKKyAgICAvLyBGb28gaXMgYSBTcGVjdWxhdGVkVHlwZSB0aGF0IGlzIGRpc2pv
aW50IHdpdGggdGhlIHBhc3NlZCBTdHJ1Y3R1cmVTZXQuIEluIHRoYXQKKyAgICAvLyBjYXNlLCB3
ZSB3aWxsIG5vdyBoYXZlIChOb25lLCBbc29tZVN0cnVjdHVyZV0pLiBJbiBnZW5lcmFsLCB3ZSBu
ZWVkIHRvIG1ha2UKKyAgICAvLyBzdXJlIHRoYXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgU3BlY3VsYXRlZFR5cGUgbmVlZHMgdG8gYmUgZmVkIGJhY2sKKyAgICAvLyBpbnRvIHRo
ZSBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFN0cnVjdHVyZVNldC4KKyAgICBtX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKyAgICBtX2Z1dHVyZVBvc3NpYmxlU3Ry
dWN0dXJlLmZpbHRlcihtX3R5cGUpOworICAgICAgICAKKyAgICBmaWx0ZXJBcnJheU1vZGVzQnlU
eXBlKCk7CisgICAgZmlsdGVyVmFsdWVCeVR5cGUoKTsKKyAgICAgICAgCisgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldEZ1dHVyZVBvc3NpYmxlU3Ry
dWN0dXJlKEdyYXBoJiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKHN0cnVjdHVy
ZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgbV9mdXR1
cmVQb3NzaWJsZVN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICBlbHNlCisgICAgICAgIG1fZnV0
dXJlUG9zc2libGVTdHJ1Y3R1cmUubWFrZVRvcCgpOworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6
OmZpbHRlckZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKEdyYXBoJiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgaWYgKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxs
VmFsaWQoKSkKKyAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5maWx0ZXIoU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZShzdHJ1Y3R1cmUpKTsKK30KKwordm9pZCBBYnN0cmFjdFZhbHVlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KAorICAgICAgICAi
KCIsIFNwZWN1bGF0aW9uRHVtcChtX3R5cGUpLCAiLCAiLCBBcnJheU1vZGVzRHVtcChtX2FycmF5
TW9kZXMpLCAiLCAiLAorICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSwgIiwgIiwgbV9m
dXR1cmVQb3NzaWJsZVN0cnVjdHVyZSk7CisgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgb3V0
LnByaW50KCIsICIsIG1fdmFsdWUpOworICAgIG91dC5wcmludCgiKSIpOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9u
IDE0OTAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAorY2xhc3MgR3JhcGg7CisKIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAg
ICBBYnN0cmFjdFZhbHVlKCkKICAgICAgICAgOiBtX3R5cGUoU3BlY05vbmUpCkBAIC0xMTIsNTcg
KzExNCwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0TW9zdFNwZWNpZmljKEpTVmFsdWUgdmFsdWUpCi0g
ICAgewotICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0g
ICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICAgICAg
ICAgIHNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBt
X2FycmF5TW9kZXMgPSBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5jbGVh
cigpOwotICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5jbGVhcigpOwotICAg
ICAgICAgICAgbV9hcnJheU1vZGVzID0gMDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bV90eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwotICAgICAgICBtX3ZhbHVlID0g
dmFsdWU7Ci0gICAgICAgIAotICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgfQotICAg
IAotICAgIHZvaWQgc2V0KEpTVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoISF2YWx1
ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1
cmUubWFrZVRvcCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgICAgICBzZXRGdXR1cmVQb3NzaWJsZVN0cnVj
dHVyZShzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJheU1vZGVz
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgICAgICAgICAgY2xvYmJlckFycmF5TW9k
ZXMoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0
dXJlLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFy
KCk7Ci0gICAgICAgICAgICBtX2FycmF5TW9kZXMgPSAwOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIG1f
dmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgCi0gICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAg
ICB9CisgICAgdm9pZCBzZXRNb3N0U3BlY2lmaWMoR3JhcGgmLCBKU1ZhbHVlKTsKKyAgICB2b2lk
IHNldChHcmFwaCYsIEpTVmFsdWUpOworICAgIHZvaWQgc2V0KEdyYXBoJiwgU3RydWN0dXJlKik7
CiAgICAgCi0gICAgdm9pZCBzZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAg
ICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICAgICAgc2V0RnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgbV9hcnJheU1vZGVzID0gYXNB
cnJheU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgICAgICBtX3R5cGUgPSBz
cGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgbV92YWx1ZSA9IEpT
VmFsdWUoKTsKLSAgICAgICAgCi0gICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBzZXQoU3BlY3VsYXRlZFR5cGUgdHlwZSkKKyAgICB2b2lkIHNldFR5cGUo
U3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIGlmICh0eXBlICYgU3BlY0NlbGwp
IHsKICAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKQEAgLTIz
MiwzMiArMTg4LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBvcHRpbWl6
ZWQgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBtX3R5cGUgbm90Ci0gICAgICAgIC8vIGhhdmluZyBz
dHJ1Y3R1cmVzLCBhcnJheSBtb2Rlcywgb3IgYSBzcGVjaWZpYyB2YWx1ZS4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTY2MwotICAgICAgICBt
X3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpOwotICAgICAgICBtX2Fy
cmF5TW9kZXMgJj0gb3RoZXIuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7Ci0gICAgICAgIG1f
Y3VycmVudEtub3duU3RydWN0dXJlLmZpbHRlcihvdGhlcik7Ci0gICAgICAgIGlmIChtX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5pc0NsZWFyKCkpCi0gICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxl
U3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fY3VycmVudEtub3duU3RydWN0
dXJlLmhhc1NpbmdsZXRvbigpKQotICAgICAgICAgICAgZmlsdGVyRnV0dXJlUG9zc2libGVTdHJ1
Y3R1cmUobV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCkpOwotICAgICAgICAKLSAg
ICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHByaW9yIHRvIHRoZSBhYm92ZSB0d28gc3RhdGVt
ZW50cyB3ZSBoYWQgKEZvbywgVE9QKSwgd2hlcmUKLSAgICAgICAgLy8gRm9vIGlzIGEgU3BlY3Vs
YXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBwYXNzZWQgU3RydWN0dXJlU2V0LiBJ
biB0aGF0Ci0gICAgICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93IGhhdmUgKE5vbmUsIFtzb21lU3Ry
dWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFrZQotICAgICAgICAvLyBzdXJlIHRo
YXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgU3BlY3VsYXRlZFR5cGUgbmVlZHMg
dG8gYmUgZmVkIGJhY2sKLSAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBm
cm9tIHRoZSBTdHJ1Y3R1cmVTZXQuCi0gICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmZp
bHRlcihtX3R5cGUpOwotICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmZpbHRlciht
X3R5cGUpOwotICAgICAgICAKLSAgICAgICAgZmlsdGVyQXJyYXlNb2Rlc0J5VHlwZSgpOwotICAg
ICAgICBmaWx0ZXJWYWx1ZUJ5VHlwZSgpOwotICAgICAgICAKLSAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwotICAgIH0KKyAgICB2b2lkIGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNl
dCYpOwogICAgIAogICAgIHZvaWQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFycmF5TW9k
ZXMpCiAgICAgewpAQCAtMjkwLDE5ICsyMjEsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewog
ICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgZmlsdGVy
QnlWYWx1ZShKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgZmlsdGVyQnlWYWx1ZShKU1ZhbHVlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZSh2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0Nl
bGwoKSkKLSAgICAgICAgICAgIGZpbHRlcihTdHJ1Y3R1cmVTZXQodmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbHRlcihzcGVjdWxhdGlv
bkZyb21WYWx1ZSh2YWx1ZSkpOwotICAgICAgICAKLSAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGZpbHRlcihzcGVjdWxhdGlv
bkZyb21WYWx1ZSh2YWx1ZSkpOworICAgICAgICBpZiAobV90eXBlKQorICAgICAgICAgICAgbV92
YWx1ZSA9IHZhbHVlOwogICAgIH0KICAgICAKICAgICBib29sIHZhbGlkYXRlVHlwZShKU1ZhbHVl
IHZhbHVlKSBjb25zdApAQCAtMzc3LDE1ICszMDAsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgICAgIC8vIGNvbXBsZXhpdHkgb2YgdGhlIGNvZGUuCiAgICAgfQogICAgIAotICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotICAgIHsKLSAgICAgICAgb3V0LnByaW50
KAotICAgICAgICAgICAgIigiLCBTcGVjdWxhdGlvbkR1bXAobV90eXBlKSwgIiwgIiwgQXJyYXlN
b2Rlc0R1bXAobV9hcnJheU1vZGVzKSwgIiwgIiwKLSAgICAgICAgICAgIG1fY3VycmVudEtub3du
U3RydWN0dXJlLCAiLCAiLCBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlKTsKLSAgICAgICAgaWYg
KCEhbV92YWx1ZSkKLSAgICAgICAgICAgIG91dC5wcmludCgiLCAiLCBtX3ZhbHVlKTsKLSAgICAg
ICAgb3V0LnByaW50KCIpIik7Ci0gICAgfQorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAogICAgIC8vIEEgZ3JlYXQgd2F5IHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUgYW5kCiAgICAgLy8gbV9mdXR1cmVQ
b3NzaWJsZVN0cnVjdHVyZSBpcyB0byBjb25zaWRlciB0aGVzZSBmb3VyIGV4YW1wbGVzOgpAQCAt
NDk0LDE5ICs0MDksOCBAQCBwcml2YXRlOgogICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJS
QVlfTU9ERVM7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0RnV0dXJlUG9zc2libGVTdHJ1Y3R1
cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBpZiAoc3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldElzU3RpbGxWYWxpZCgpKQotICAgICAgICAgICAgbV9mdXR1
cmVQb3NzaWJsZVN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgZmlsdGVyRnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgewotICAgICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldElz
U3RpbGxWYWxpZCgpKQotICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5maWx0
ZXIoU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShzdHJ1Y3R1cmUpKTsKLSAgICB9CisgICAgdm9pZCBz
ZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZShHcmFwaCYsIFN0cnVjdHVyZSogc3RydWN0dXJlKTsK
KyAgICB2b2lkIGZpbHRlckZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKEdyYXBoJiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpOwogCiAgICAgLy8gV2UgY291bGQgZ28gZnVydGhlciwgYW5kIGVuc3VyZSB0
aGF0IGlmIHRoZSBmdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSBjb250cmF2ZW5lcwogICAgIC8vIHRo
ZSB2YWx1ZSwgdGhlbiB3ZSBjb3VsZCBjbGVhciBib3RoIG9mIHRob3NlIHRoaW5ncy4gQnV0IHRo
YXQncyB1bmxpa2VseSB0byBoZWxwCg==
</data>
<flag name="review"
          id="220959"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>