<?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>55283</bug_id>
          
          <creation_ts>2011-02-25 18:11:05 -0800</creation_ts>
          <short_desc>Make ScopeChainNode GC allocated</short_desc>
          <delta_ts>2011-02-28 13:54:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358325</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-25 18:11:05 -0800</bug_when>
    <thetext>Make ScopeChainNode GC allocated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358328</commentid>
    <comment_count>1</comment_count>
      <attachid>83911</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-25 18:16:38 -0800</bug_when>
    <thetext>Created attachment 83911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358356</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-25 19:40:09 -0800</bug_when>
    <thetext>Attachment 83911 did not build on qt:
Build output: http://queues.webkit.org/results/8043579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358360</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 19:52:58 -0800</bug_when>
    <thetext>Attachment 83911 did not build on win:
Build output: http://queues.webkit.org/results/8031574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358365</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 20:47:33 -0800</bug_when>
    <thetext>Attachment 83911 did not build on win:
Build output: http://queues.webkit.org/results/8043603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358366</commentid>
    <comment_count>5</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-25 20:51:33 -0800</bug_when>
    <thetext>Attachment 83911 did not build on gtk:
Build output: http://queues.webkit.org/results/8035544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358403</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 23:16:44 -0800</bug_when>
    <thetext>Attachment 83911 did not build on chromium:
Build output: http://queues.webkit.org/results/8019600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358406</commentid>
    <comment_count>7</comment_count>
      <attachid>83911</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-25 23:37:16 -0800</bug_when>
    <thetext>Comment on attachment 83911
Patch

Per our discussion I suggest making scope chain an object so that it can hold properties in anonymous slots, and do away with custom marking (also, function should also be holding scope chain in an anonymous slot now).  As such I&apos;m going to r- for the time being.  Hope this sounds right to you, feel free to argue we should land this as a cell for now if you thing this is a useful stepping stone &amp; I&apos;ll re-review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358577</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-26 13:37:42 -0800</bug_when>
    <thetext>Attachment 83911 did not build on chromium:
Build output: http://queues.webkit.org/results/8031878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359224</commentid>
    <comment_count>9</comment_count>
      <attachid>84092</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-28 12:09:10 -0800</bug_when>
    <thetext>Created attachment 84092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359247</commentid>
    <comment_count>10</comment_count>
      <attachid>84092</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-28 12:44:27 -0800</bug_when>
    <thetext>Comment on attachment 84092
Patch

Okay, having function have different types of reference to its global object &amp; scope is badness, but I understand that we&apos;ll revisit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359258</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-28 12:54:01 -0800</bug_when>
    <thetext>Attachment 84092 did not build on win:
Build output: http://queues.webkit.org/results/8073418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359260</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-28 12:59:02 -0800</bug_when>
    <thetext>Attachment 84092 did not build on qt:
Build output: http://queues.webkit.org/results/8073420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359261</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-28 13:05:48 -0800</bug_when>
    <thetext>Committed r79904: &lt;http://trac.webkit.org/changeset/79904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359279</commentid>
    <comment_count>14</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-28 13:19:58 -0800</bug_when>
    <thetext>Attachment 84092 did not build on gtk:
Build output: http://queues.webkit.org/results/8077151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359319</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-28 13:54:53 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 84092 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/8073420

Qt buildfix landed in http://trac.webkit.org/changeset/79916 (https://bugs.webkit.org/show_bug.cgi?id=55407)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83911</attachid>
            <date>2011-02-25 18:16:38 -0800</date>
            <delta_ts>2011-02-28 12:09:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55283-20110225181637.patch</filename>
            <type>text/plain</type>
            <size>92885</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk2OTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY3
ZDA0OTQ4OGJlYjdmNDAwZDY2ZDNlYjVlZjE5ZWUzYzVmZmE5YjcuLmVlMWJmZDg0Y2FiOWUzNDI5
YzI5N2M1NTM4ZTYyYTQzZDJhMDNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDExNyBAQAorMjAxMS0wMi0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2Nv
cGVDaGFpbk5vZGUgR0MgYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NTI4MworCisgICAgICAgIFNpbXBsaWZ5IGxpZmV0aW1lIGFuZCBv
dGhlciBpc3N1ZXMgd2l0aCB0aGUgc2NvcGVjaGFpbgorICAgICAgICBieSBtYWtpbmcgaXQgZ2Mg
YWxsb2NhdGVkLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkKKyAgICAgICAgZnVuY3Rpb24g
ZXhpdCBhbmQgdW53aW5kaW5nLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGUKKyAgICAgICAgY3VycmVu
dCBpdGVyYXRpdmUgcmVmY291bnRpbmcgZ28gYXdheS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBs
eSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpSZWNvbXBpbGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6c2NvcGVDaGFpbik6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvQ2FjaGVkQ2FsbC5oOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpDYWNoZWRDYWxs
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmRlcHRoKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3Jf
dGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxl
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHA6CisgICAgICAgICogcnVudGltZS9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0
cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpzY29wZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnNldFNjb3Bl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0
YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpt
YXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YTo6SlNHbG9iYWxPYmpl
Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2JhbFNjb3BlQ2hhaW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
Wm9tYmllLmNwcDoKKyAgICAgICAgKiBydW50aW1lL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uY3BwOgorICAgICAgICAo
SlNDOjpTY29wZUNoYWluTm9kZTo6cHJpbnQpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9k
ZTo6bG9jYWxEZXB0aCk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjptYXJrQ2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTY29w
ZUNoYWluTm9kZTo6U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9k
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnB1c2gp
OgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6cG9wKToKKyAgICAgICAgKEpTQzo6U2Nv
cGVDaGFpbkl0ZXJhdG9yOjpTY29wZUNoYWluSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpTY29w
ZUNoYWluSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVy
YXRvcjo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3Bl
cmF0b3IrKyk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpiZWdpbik6CisgICAgICAg
IChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjplbmQpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Omds
b2JhbERhdGEpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmxleGljYWxHbG9iYWxPYmplY3Qp
OgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Omdsb2JhbFRoaXNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9TY29wZUNoYWluTWFyay5oOgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisK
IDIwMTEtMDItMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCmluZGV4IGY3OWQyMmY3NzU5M2Q3MzM1MmRlMGQ1NGNjNGE2NGRmMjI0MDE4YWYuLjZh
ZmNiMmViODM1ZmVhMGUzZGYyYTAwM2JiMDBkM2U1ZTgwZTcxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMzA3LDcgKzMwNyw3IEBAIF9fWk4zSlNDOEpT
T2JqZWN0NnNfaW5mb0UKIF9fWk4zSlNDOFByb2ZpbGVyMTNzdG9wUHJvZmlsaW5nRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzhQcm9maWxlcjE0c3RhcnRQcm9maWxpbmdF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDOFByb2ZpbGVyOHByb2ZpbGVy
RXYKLV9fWk4zSlNDOGV2YWx1YXRlRVBOU185RXhlY1N0YXRlRVJOU18xMFNjb3BlQ2hhaW5FUktO
U18xMFNvdXJjZUNvZGVFTlNfN0pTVmFsdWVFCitfX1pOM0pTQzhldmFsdWF0ZUVQTlNfOUV4ZWNT
dGF0ZUVQTlNfMTRTY29wZUNoYWluTm9kZUVSS05TXzEwU291cmNlQ29kZUVOU183SlNWYWx1ZUUK
IF9fWk4zSlNDOUNvZGVCbG9ja0QxRXYKIF9fWk4zSlNDOUNvZGVCbG9ja0QyRXYKIF9fWk4zSlND
OU1hcmtTdGFjazEwc19wYWdlU2l6ZUUKQEAgLTU4OCw2ICs1ODgsNyBAQCBfX1pOSzNXVEY2U3Ry
aW5nOXN1YnN0cmluZ0VqagogX19aTkszV1RGOENvbGxhdG9yN2NvbGxhdGVFUEt0bVMyX20KIF9f
WlRWTjNKU0MxMlN0cmluZ09iamVjdEUKIF9fWlRWTjNKU0MxNEpTR2xvYmFsT2JqZWN0RQorX19a
VFZOM0pTQzE0U2NvcGVDaGFpbk5vZGVFCiBfX1pUVk4zSlNDMTVKU1dyYXBwZXJPYmplY3RFCiBf
X1pUVk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uRQogX19aVFZOM0pTQzE2SlNWYXJpYWJsZU9iamVj
dEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
NWZiYThiYjczMDU5YjdkNzlhMjU5Y2IwOGE0ZmUyYzBhMjk5YmRiYS4uMmQyMzVkZmYwODY3YjRj
MDlmZmU0MzBiMGI2YTU5YmFmMDU3MGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE2OTcsNyArMTY5Nyw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpjcmVhdGVBY3RpdmF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT51bmNoZWNrZWRSKGFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOwogICAg
IEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoY2FsbEZyYW1lKSBKU0FjdGl2YXRpb24o
Y2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFi
bGUoKSkpOwogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihhY3RpdmF0aW9uUmVnaXN0ZXIoKSkg
PSBKU1ZhbHVlKGFjdGl2YXRpb24pOwotICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKS0+Y29weSgpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBjYWxs
RnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZh
dGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDAxOGQ4MzI4OWJm
MDg3Y2ZmOTlkMDhjMjNmNjZmZjM5NTI4NDI4OTUuLjVlYzJhM2Y5OGE0NThkMTZhMmYyOWE2OTdm
ZDRiNmNlNDNkMDQ1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKKyNpbmNsdWRlICJTY29w
ZUNoYWluLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggN2I1NGIxODlkYzU0YmJkYjA4YmJhYmQxZDY1YmY2YTM0NDVmYTA0NS4uYzM0
NGVkYzg0NjI1ZTg2ZDczYzc2ZGY0ZTE4MjFmYzYwZGQ4NDM4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CkBAIC0xNDYsNyArMTQ3LDcgQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKICAgICBpZiAoc19kdW1wc0dlbmVyYXRl
ZENvZGUpCi0gICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwogI2VuZGlmCiAKICAgICBpZiAoKG1f
Y29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09
IEV2YWxDb2RlKQpAQCAtMTU1LDcgKzE1Niw3IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwogCiAgICAgaWYg
KG1fZXhwcmVzc2lvblRvb0RlZXApCi0gICAgICAgIHJldHVybiBjcmVhdGVPdXRPZk1lbW9yeUVy
cm9yKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICByZXR1cm4gY3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcihtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKQEAgLTE5NywxMSArMTk4LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnByZXNlcnZlTGFzdFZhcigpCiAgICAgICAgIG1fbGFzdFZhciA9ICZtX2NhbGxlZVJlZ2lz
dGVycy5sYXN0KCk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQ
cm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIGNvbnN0IFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4sIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKQotICAg
IDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5kZWJ1
Z2dlcigpKQotICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKHNjb3BlQ2hhaW4uZ2xvYmFs
T2JqZWN0KCktPnN1cHBvcnRzUHJvZmlsaW5nKCkpCi0gICAgLCBtX3Nob3VsZEVtaXRSaWNoU291
cmNlSW5mbyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZv
KCkpCi0gICAgLCBtX3Njb3BlQ2hhaW4oJnNjb3BlQ2hhaW4pCitCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbiwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBQcm9ncmFtQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKKyAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhz
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QtPnN1cHBvcnRzUHJvZmlsaW5nKCkpCisgICAgLCBtX3No
b3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPnN1cHBvcnRz
UmljaFNvdXJjZUluZm8oKSkKKyAgICAsIG1fc2NvcGVDaGFpbigqc2NvcGVDaGFpbi0+Z2xvYmFs
RGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCiAgICAg
LCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
QEAgLTIxNiw3ICsyMTcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
UHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBjb25zdCBTY29wZUNoYWluJgogICAgICwgbV9oYXND
cmVhdGVkQWN0aXZhdGlvbih0cnVlKQogICAgICwgbV9maXJzdExhenlGdW5jdGlvbigwKQogICAg
ICwgbV9sYXN0TGF6eUZ1bmN0aW9uKDApCi0gICAgLCBtX2dsb2JhbERhdGEoJnNjb3BlQ2hhaW4u
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSkKKyAgICAsIG1fZ2xvYmFsRGF0YShzY29wZUNo
YWluLT5nbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQob3BfZW5kKQogI2lmbmRlZiBO
REVCVUcKICAgICAsIG1fbGFzdE9wY29kZVBvc2l0aW9uKDApCkBAIC0yMzcsNyArMjM4LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFt
Tm9kZSwgY29uc3QgU2NvcGVDaGFpbiYKICAgICAKICAgICBtX2NvZGVCbG9jay0+bV9udW1QYXJh
bWV0ZXJzID0gMTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQo
KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAg
ICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSA9ICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwogICAgIApAQCAtMjgyLDcgKzI4Myw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIGNv
bnN0IFNjb3BlQ2hhaW4mCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgICAgICBnbG9iYWxP
YmplY3QtPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIGZ1bmN0aW9uLT5pZGVudCgpLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgbWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2NvcGVD
aGFpbi5ub2RlKCkpLCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0
V2l0aEF0dHJpYnV0ZXMoZXhlYywgZnVuY3Rpb24tPmlkZW50KCksIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBtYWtlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24pLCBzY29wZUNoYWluKSwgRG9u
dERlbGV0ZSk7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YXJT
dGFjay5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJv
cGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKQEAgLTI5OCwxMSArMjk5LDExIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5v
ZGUsIGNvbnN0IFNjb3BlQ2hhaW4mCiAgICAgY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFycyA9
IGNvZGVCbG9jay0+bV9udW1WYXJzOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBjb25zdCBTY29wZUNoYWlu
JiBzY29wZUNoYWluLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIENvZGVCbG9jayogY29kZUJs
b2NrKQotICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhzY29wZUNoYWluLmdsb2JhbE9iamVj
dCgpLT5kZWJ1Z2dlcigpKQotICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKHNjb3BlQ2hh
aW4uZ2xvYmFsT2JqZWN0KCktPnN1cHBvcnRzUHJvZmlsaW5nKCkpCi0gICAgLCBtX3Nob3VsZEVt
aXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5zdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKCkpCi0gICAgLCBtX3Njb3BlQ2hhaW4oJnNjb3BlQ2hhaW4pCitCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3Moc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQorICAgICwgbV9zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+c3VwcG9ydHNQcm9maWxpbmcoKSkKKyAg
ICAsIG1fc2hvdWxkRW1pdFJpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+
c3VwcG9ydHNSaWNoU291cmNlSW5mbygpKQorICAgICwgbV9zY29wZUNoYWluKCpzY29wZUNoYWlu
LT5nbG9iYWxEYXRhLCBzY29wZUNoYWluKQogICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJs
ZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uQm9keSkKICAgICAsIG1fY29kZUJsb2NrKGNv
ZGVCbG9jaykKQEAgLTMxNiw3ICszMTcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBjb25zdCBTY29wZQogICAg
ICwgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbihmYWxzZSkKICAgICAsIG1fZmlyc3RMYXp5RnVuY3Rp
b24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQotICAgICwgbV9nbG9iYWxEYXRhKCZz
Y29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpCisgICAgLCBtX2dsb2JhbERh
dGEoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29kZUlEKG9wX2VuZCkK
ICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2xhc3RPcGNvZGVQb3NpdGlvbigwKQpAQCAtNDY0LDEx
ICs0NjUsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29uc3QgU2NvcGUKICAgICB9CiB9CiAKLUJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihFdmFsTm9kZSogZXZhbE5vZGUsIGNvbnN0IFNj
b3BlQ2hhaW4mIHNjb3BlQ2hhaW4sIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgRXZhbENvZGVC
bG9jayogY29kZUJsb2NrKQotICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhzY29wZUNoYWlu
Lmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQotICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhv
b2tzKHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCktPnN1cHBvcnRzUHJvZmlsaW5nKCkpCi0gICAg
LCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5z
dXBwb3J0c1JpY2hTb3VyY2VJbmZvKCkpCi0gICAgLCBtX3Njb3BlQ2hhaW4oJnNjb3BlQ2hhaW4p
CitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqIGV2YWxOb2Rl
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKHNj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKKyAgICAsIG1fc2hvdWxkRW1pdFBy
b2ZpbGVIb29rcyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPnN1cHBvcnRzUHJvZmlsaW5nKCkp
CisgICAgLCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QtPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oKSkKKyAgICAsIG1fc2NvcGVDaGFpbigqc2NvcGVD
aGFpbi0+Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9s
VGFibGUpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAsIG1fY29kZUJsb2NrKGNv
ZGVCbG9jaykKQEAgLTQ4Miw3ICs0ODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoRXZhbE5vZGUqIGV2YWxOb2RlLCBjb25zdCBTY29wZUNoYWluJiBzY29wZQogICAg
ICwgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbih0cnVlKQogICAgICwgbV9maXJzdExhenlGdW5jdGlv
bigwKQogICAgICwgbV9sYXN0TGF6eUZ1bmN0aW9uKDApCi0gICAgLCBtX2dsb2JhbERhdGEoJnNj
b3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSkKKyAgICAsIG1fZ2xvYmFsRGF0
YShzY29wZUNoYWluLT5nbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQob3BfZW5kKQog
I2lmbmRlZiBOREVCVUcKICAgICAsIG1fbGFzdE9wY29kZVBvc2l0aW9uKDApCkBAIC05MDcsNyAr
OTA4LDcgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZO
b3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJRCogY29uZCwKIAogICAgIGVtaXRPcGNvZGUob3Bfam5l
cV9wdHIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QoKS0+ZCgpLT5j
YWxsRnVuY3Rpb24uZ2V0KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdC0+ZCgpLT5jYWxsRnVuY3Rpb24uZ2V0KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkp
OwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkBAIC05MTgsNyArOTE5LDcgQEAgUGFzc1JlZlB0cjxM
YWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lz
dGVySUQqIGNvbmQKIAogICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QoKS0+ZCgpLT5hcHBseUZ1bmN0aW9uLmdldCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmQo
KS0+YXBwbHlGdW5jdGlvbi5nZXQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdl
dC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdl
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkZTE2ZjhlMzU4NzUyNGFmNGNjNDA5MzNjMjI1OGQ4ZmJk
YTA2MTE3Li5iMzg1MWM3NmZlMmRkZmU3OWRlOTVlMTBiYTAyZjJjYjA4OGU5MGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC00Nyw4ICs0Nyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElk
ZW50aWZpZXI7Ci0gICAgY2xhc3MgU2NvcGVDaGFpbjsKLSAgICBjbGFzcyBTY29wZU5vZGU7Cisg
ICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBjbGFzcyBDYWxsQXJndW1lbnRzIHsKICAg
ICBwdWJsaWM6CkBAIC05Myw5ICs5Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwog
ICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUoKTsKIAotICAgICAgICBCeXRl
Y29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIGNvbnN0IFNjb3BlQ2hhaW4mLCBTeW1ib2xUYWJs
ZSosIFByb2dyYW1Db2RlQmxvY2sqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoRnVuY3Rp
b25Cb2R5Tm9kZSosIGNvbnN0IFNjb3BlQ2hhaW4mLCBTeW1ib2xUYWJsZSosIENvZGVCbG9jayop
OwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihFdmFsTm9kZSosIGNvbnN0IFNjb3BlQ2hhaW4m
LCBTeW1ib2xUYWJsZSosIEV2YWxDb2RlQmxvY2sqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoUHJvZ3JhbU5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNv
ZGVCbG9jayopOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlvbkJvZHlOb2RlKiwg
U2NvcGVDaGFpbk5vZGUqLCBTeW1ib2xUYWJsZSosIENvZGVCbG9jayopOworICAgICAgICBCeXRl
Y29kZUdlbmVyYXRvcihFdmFsTm9kZSosIFNjb3BlQ2hhaW5Ob2RlKiwgU3ltYm9sVGFibGUqLCBF
dmFsQ29kZUJsb2NrKik7CiAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50aWZp
ZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lczsgfQpAQCAtNTIwLDcgKzUxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRS
aWNoU291cmNlSW5mbzsKIAotICAgICAgICBjb25zdCBTY29wZUNoYWluKiBtX3Njb3BlQ2hhaW47
CisgICAgICAgIEdsb2JhbDxTY29wZUNoYWluTm9kZT4gbV9zY29wZUNoYWluOwogICAgICAgICBT
eW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsKIAogICAgICAgICBTY29wZU5vZGUqIG1fc2NvcGVO
b2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXgg
YjFiMzMxNWU0ZTk2OWYzODQ3NWQyMWQ0ZGM2NmFkMWMxOGViNzU4My4uYjk5OTQ0NjZjZDBlMmNk
MDQzMTZiZjk0ZTdkOWY4Y2UyZmQxNzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCkBAIC03Niw5ICs3Niw5IEBAIGlubGluZSB2b2lkIFJlY29tcGls
ZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQogICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFi
bGVzLmFkZChleGVjdXRhYmxlKS5zZWNvbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGZ1bmN0aW9uLT5zY29wZSgpLmdsb2JhbE9iamVjdCgpLT5KU0dsb2JhbE9i
amVjdDo6Z2xvYmFsRXhlYygpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZ1bmN0aW9uLT5zY29w
ZSgpLT5nbG9iYWxPYmplY3QtPkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCk7CiAgICAgZXhl
Y3V0YWJsZS0+ZGlzY2FyZENvZGUoKTsKLSAgICBpZiAobV9kZWJ1Z2dlciA9PSBmdW5jdGlvbi0+
c2NvcGUoKS5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKKyAgICBpZiAobV9kZWJ1Z2dlciA9
PSBmdW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQogICAgICAgICBt
X3NvdXJjZVByb3ZpZGVycy5hZGQoZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhl
Yyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmgKaW5kZXggOWQzNzdlZjk3YTBhMmRiM2FhYWMzMjI4NWVhNmNmMDExZDdlMTZi
OC4uZjZiNDE1Y2VjYmQwOTQ2MmQzY2QzYTQ5Yzk5MmRjYjc2NmI3YWIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1l
LT5keW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KLSAgICAgICAgY29uc3QgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9
CisgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQogICAgICAgICBjb25zdCBVU3RyaW5nKiBmdW5jdGlv
bk5hbWUoKSBjb25zdDsKICAgICAgICAgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkg
Y29uc3Q7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKaW5kZXggNzQwMDAxZDY4ZmIxNmFkYTJiZWU0
YzJkNmM4NmY1YTZkNzExMzgyZi4uMDVlOTA1NjhmOGQ5OWNjYTA3Y2Q2N2MxN2Y1ZWM0Nzc1NjZh
MTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2Fs
bC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZENh
bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJnQ291
bnQpCiAgICAgICAgICAgICA6IG1fdmFsaWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faW50ZXJw
cmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQotICAgICAgICAgICAgLCBtX2dsb2JhbE9i
amVjdFNjb3BlKGNhbGxGcmFtZSwgZnVuY3Rpb24tPnNjb3BlKCkuZ2xvYmFsT2JqZWN0KCkpCisg
ICAgICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0U2NvcGUoY2FsbEZyYW1lLCBmdW5jdGlvbi0+c2Nv
cGUoKS0+Z2xvYmFsT2JqZWN0LmdldCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
IWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1f
aW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJnQ291bnQsIGZ1bmN0aW9uLT5zY29wZSgpLm5vZGUo
KSk7CisgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVw
ZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgZnVuY3Rpb24sIGFy
Z0NvdW50LCBmdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgICAgICAgICBtX3ZhbGlkID0gIWNhbGxG
cmFtZS0+aGFkRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggMTkwYTdjMWQyNTA5YzEz
Nzg1MmEyNmZmYzFhODM3M2M1YjVkMmRkNy4uY2UyNjNhNGU5YzcwMmY3NTllNjgzMzNkNzYwZmQ2
ODlhYjZhNTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaApAQCAtMjYsMTMgKzI2LDEzIEBACiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxl
LmgiCi0jaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDICB7CiAKICAgICBj
bGFzcyBBcmd1bWVudHM7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEludGVy
cHJldGVyOworICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgLy8gUmVwcmVzZW50cyB0
aGUgY3VycmVudCBzdGF0ZSBvZiBzY3JpcHQgZXhlY3V0aW9uLgogICAgIC8vIFBhc3NlZCBhcyB0
aGUgZmlyc3QgYXJndW1lbnQgdG8gbW9zdCBmdW5jdGlvbnMuCkBAIC01MSwyMyArNTEsMTMgQEAg
bmFtZXNwYWNlIEpTQyAgewogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggdGhl
IGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSB3YXMgZGVmaW5lZC4KICAgICAgICAgLy8gRGlmZmVy
cyBmcm9tIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBkdXJpbmcgZnVuY3Rpb24gY2FsbHMgYWNyb3Nz
IHdlYiBicm93c2VyIGZyYW1lcy4KLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2NvcGVDaGFp
bigpLT5nbG9iYWxPYmplY3Q7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAKICAgICAgICAgLy8gRGlmZmVycyBm
cm9tIGxleGljYWxHbG9iYWxPYmplY3QgYmVjYXVzZSB0aGlzIHdpbGwgaGF2ZSBET00gd2luZG93
IHNoZWxsIHJhdGhlciB0aGFuCiAgICAgICAgIC8vIHRoZSBhY3R1YWwgRE9NIHdpbmRvdywgd2hp
Y2ggY2FuJ3QgYmUgInRoaXMiIGZvciBzZWN1cml0eSByZWFzb25zLgotICAgICAgICBKU09iamVj
dCogZ2xvYmFsVGhpc1ZhbHVlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHNjb3BlQ2hhaW4oKS0+Z2xvYmFsVGhpczsKLSAgICAgICAgfQorICAgICAgICBpbmxpbmUgSlNP
YmplY3QqIGdsb2JhbFRoaXNWYWx1ZSgpIGNvbnN0OwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChzY29wZUNo
YWluKCktPmdsb2JhbERhdGEpOwotICAgICAgICAgICAgcmV0dXJuICpzY29wZUNoYWluKCktPmds
b2JhbERhdGE7Ci0gICAgICAgIH0KKyAgICAgICAgaW5saW5lIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSgpIGNvbnN0OwogCiAgICAgICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgYWNj
ZXNzIHRvIGdsb2JhbCBkYXRhLgogICAgICAgICAvLyBJdCB0YWtlcyBhIGZldyBtZW1vcnkgcmVm
ZXJlbmNlcyB0byBnZXQgZnJvbSBhIGNhbGwgZnJhbWUgdG8gdGhlIGdsb2JhbCBkYXRhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRl
eCAzZjIxYmFhMzcwNzU4OWYzZTgzYTgwYTFmNDY5Mjk5YzUxNmFiNDZjLi4yOWQ0MjljZjk3ZjEz
YzRiMjA0MDBlZTU4N2E1OGY4MmNhOTIxZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTc2LDExICs3NiwxMSBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFJldHVybnMgdGhlIGRlcHRo
IG9mIHRoZSBzY29wZSBjaGFpbiB3aXRoaW4gYSBnaXZlbiBjYWxsIGZyYW1lLgotc3RhdGljIGlu
dCBkZXB0aChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU2NvcGVDaGFpbiYgc2MpCitzdGF0aWMgaW50
IGRlcHRoKENvZGVCbG9jayogY29kZUJsb2NrLCBTY29wZUNoYWluTm9kZSogc2MpCiB7CiAgICAg
aWYgKCFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIHNjLmxvY2FsRGVwdGgoKTsKKyAgICByZXR1cm4gc2MtPmxvY2FsRGVwdGgo
KTsKIH0KIAogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikgCkBAIC01NzksOSArNTc5LDYgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBj
YWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cykt
PmNvcHlSZWdpc3RlcnMoKTsKICAgICB9CiAKLSAgICBpZiAob2xkQ29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkpCi0gICAgICAgIHNjb3BlQ2hhaW4tPmRlcmVmKCk7Ci0KICAgICBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIGlmIChj
YWxsZXJGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNzEwLDExICs3MDcsMTAgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnBy
ZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1YKIAogICAgIC8v
IFVud2luZCB0aGUgc2NvcGUgY2hhaW4gd2l0aGluIHRoZSBleGNlcHRpb24gaGFuZGxlcidzIGNh
bGwgZnJhbWUuCiAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNj
b3BlQ2hhaW4oKTsKLSAgICBTY29wZUNoYWluIHNjKHNjb3BlQ2hhaW4pOwogICAgIGludCBzY29w
ZURlbHRhID0gMDsKICAgICBpZiAoIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8
IGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgCiAgICAgICAgIHx8IGNhbGxG
cmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVl
KCkpCi0gICAgICAgIHNjb3BlRGVsdGEgPSBkZXB0aChjb2RlQmxvY2ssIHNjKSAtIGhhbmRsZXIt
PnNjb3BlRGVwdGg7CisgICAgICAgIHNjb3BlRGVsdGEgPSBkZXB0aChjb2RlQmxvY2ssIHNjb3Bl
Q2hhaW4pIC0gaGFuZGxlci0+c2NvcGVEZXB0aDsKICAgICBBU1NFUlQoc2NvcGVEZWx0YSA+PSAw
KTsKICAgICB3aGlsZSAoc2NvcGVEZWx0YS0tKQogICAgICAgICBzY29wZUNoYWluID0gc2NvcGVD
aGFpbi0+cG9wKCk7CkBAIC03NjEsMTAgKzc1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBT
CiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGVDaGFpbiwgQ2FsbEZy
YW1lOjpub0NhbGxlcigpLCBjb2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycywgMCk7CiAgICAgbmV3
Q2FsbEZyYW1lLT51bmNoZWNrZWRSKG5ld0NhbGxGcmFtZS0+aG9zdFRoaXNSZWdpc3RlcigpKSA9
IEpTVmFsdWUodGhpc09iaik7CiAKLSAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpCi0gICAgICAgIHNjb3BlQ2hhaW4tPnJlZigpOwotCi0gICAgRHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFs
T2JqZWN0KTsKKyAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUo
Y2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogCiAgICAgUHJvZmls
ZXIqKiBwcm9maWxlciA9IFByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKTsKICAg
ICBpZiAoKnByb2ZpbGVyKQpAQCAtODM1LDcgKzgyOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENh
bGxUCiAKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgMCwgY2FsbERh
dGFTY29wZUNoYWluLCBjYWxsRnJhbWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCksIGFyZ0NvdW50
LCBmdW5jdGlvbik7CiAKLSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9i
amVjdFNjb3BlKG5ld0NhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluLT5nbG9iYWxPYmplY3Qp
OworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUobmV3
Q2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CiAKICAg
ICAgICAgUHJvZmlsZXIqKiBwcm9maWxlciA9IFByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2UoKTsKICAgICAgICAgaWYgKCpwcm9maWxlcikKQEAgLTg2Nyw3ICs4NjAsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDYWxsVAogICAgIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRl
KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyByZWdpc3Rlck9mZnNldCk7CiAgICAgbmV3Q2Fs
bEZyYW1lLT5pbml0KDAsIDAsIHNjb3BlQ2hhaW4sIGNhbGxGcmFtZS0+YWRkSG9zdENhbGxGcmFt
ZUZsYWcoKSwgYXJnQ291bnQsIGZ1bmN0aW9uKTsKIAotICAgIER5bmFtaWNHbG9iYWxPYmplY3RT
Y29wZSBnbG9iYWxPYmplY3RTY29wZShuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbE9i
amVjdCk7CisgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKG5l
d0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsKIAogICAgIFByb2Zp
bGVyKiogcHJvZmlsZXIgPSBQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCk7CiAg
ICAgaWYgKCpwcm9maWxlcikKQEAgLTkyNCw3ICs5MTcsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25z
dHJ1YwogCiAgICAgICAgIG5ld0NhbGxGcmFtZS0+aW5pdChuZXdDb2RlQmxvY2ssIDAsIGNvbnN0
cnVjdERhdGFTY29wZUNoYWluLCBjYWxsRnJhbWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCksIGFy
Z0NvdW50LCBjb25zdHJ1Y3Rvcik7CiAKLSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
IGdsb2JhbE9iamVjdFNjb3BlKG5ld0NhbGxGcmFtZSwgY29uc3RydWN0RGF0YVNjb3BlQ2hhaW4t
Pmdsb2JhbE9iamVjdCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxP
YmplY3RTY29wZShuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFTY29wZUNoYWluLT5nbG9iYWxP
YmplY3QuZ2V0KCkpOwogCiAgICAgICAgIFByb2ZpbGVyKiogcHJvZmlsZXIgPSBQcm9maWxlcjo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCk7CiAgICAgICAgIGlmICgqcHJvZmlsZXIpCkBAIC05
NTksNyArOTUyLDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAgICBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0ZXJP
ZmZzZXQpOwogICAgIG5ld0NhbGxGcmFtZS0+aW5pdCgwLCAwLCBzY29wZUNoYWluLCBjYWxsRnJh
bWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCksIGFyZ0NvdW50LCBjb25zdHJ1Y3Rvcik7CiAKLSAg
ICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUobmV3Q2FsbEZyYW1l
LCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QpOworICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29w
ZSBnbG9iYWxPYmplY3RTY29wZShuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVj
dC5nZXQoKSk7CiAKICAgICBQcm9maWxlcioqIHByb2ZpbGVyID0gUHJvZmlsZXI6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZSgpOwogICAgIGlmICgqcHJvZmlsZXIpCkBAIC0xMDc2LDcgKzEwNjks
NyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgIGlmIChtX3JlZW50cnlEZXB0aCA+PSBN
YXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCAmJiBtX3JlZW50cnlEZXB0aCA+PSBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCi0gICAgRHluYW1pY0ds
b2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0KTsKKyAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0
U2NvcGUoY2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogCiAgICAg
SlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPmNvbXBpbGUoY2FsbEZyYW1lLCBzY29wZUNo
YWluKTsKICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQpAQCAtMTA4NCw3ICsxMDc3
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSAmZXZhbC0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAogICAgIEpTT2JqZWN0KiB2YXJpYWJs
ZU9iamVjdDsKLSAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsgOyBu
b2RlID0gbm9kZS0+bmV4dCkgeworICAgIGZvciAoU2NvcGVDaGFpbk5vZGUqIG5vZGUgPSBzY29w
ZUNoYWluOyA7IG5vZGUgPSBub2RlLT5uZXh0LmdldCgpKSB7CiAgICAgICAgIEFTU0VSVChub2Rl
KTsKICAgICAgICAgaWYgKG5vZGUtPm9iamVjdC0+aXNWYXJpYWJsZU9iamVjdCgpKSB7CiAgICAg
ICAgICAgICB2YXJpYWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPihu
b2RlLT5vYmplY3QuZ2V0KCkpOwpAQCAtMTEzMyw5ICsxMTI2LDYgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTT2JqZWMKICAgICBuZXdDYWxsRnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWlu
LCBjYWxsRnJhbWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCksIGNvZGVCbG9jay0+bV9udW1QYXJh
bWV0ZXJzLCAwKTsKICAgICBuZXdDYWxsRnJhbWUtPnVuY2hlY2tlZFIobmV3Q2FsbEZyYW1lLT5o
b3N0VGhpc1JlZ2lzdGVyKCkpID0gSlNWYWx1ZSh0aGlzT2JqKTsKIAotICAgIGlmIChjb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkKLSAgICAgICAgc2NvcGVDaGFpbi0+cmVmKCk7Ci0K
ICAgICBQcm9maWxlcioqIHByb2ZpbGVyID0gUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpOwogICAgIGlmICgqcHJvZmlsZXIpCiAgICAgICAgICgqcHJvZmlsZXIpLT53aWxsRXhl
Y3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5lTm8oKSk7CkBAIC0z
ODA1LDcgKzM3OTUsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgKi8KICAgICAg
ICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBKU1N0YXRp
Y1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gbmV3IChjYWxsRnJhbWUpIEpTU3Rh
dGljU2NvcGVPYmplY3QoY2FsbEZyYW1lLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOwotICAgICAgICAgICAgZnVuYy0+c2NvcGUoKS5wdXNoKGZ1bmN0aW9u
U2NvcGVPYmplY3QpOworICAgICAgICAgICAgZnVuYy0+c2V0U2NvcGUoKmdsb2JhbERhdGEsIGZ1
bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKGZ1bmMpOwpAQCAtMzgz
NSw3ICszODI1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgUmVnaXN0ZXIqIG5l
d0NhbGxGcmFtZSA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyByZWdpc3Rlck9mZnNldDsKICAg
ICAgICAgUmVnaXN0ZXIqIGFyZ3YgPSBuZXdDYWxsRnJhbWUgLSBSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemUgLSBhcmdDb3VudDsKICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBh
cmd2WzBdLmpzVmFsdWUoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3Q7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2Jq
ZWN0LmdldCgpOwogCiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0ICYmIGZ1
bmNWYWwgPT0gZ2xvYmFsT2JqZWN0LT5ldmFsRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBjYWxsRXZhbChjYWxsRnJhbWUsIHJlZ2lzdGVyRmlsZSwgYXJndiwgYXJn
Q291bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKQEAgLTQxNTAsOSArNDE0MCw2IEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAKLSAg
ICAgICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAm
JiBjYWxsRnJhbWUtPnIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgp
KQotICAgICAgICAgICAgY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmRlcmVmKCk7Ci0KICAgICAg
ICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGNhbGxGcmFtZS0+cihyZXN1bHQpLmpzVmFsdWUoKTsK
IAogICAgICAgICB2UEMgPSBjYWxsRnJhbWUtPnJldHVyblZQQygpOwpAQCAtNDE5MSw5ICs0MTc4
LDYgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpbnQgcmVzdWx0ID0gdlBDWzFd
LnUub3BlcmFuZDsKIAotICAgICAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWlu
KCkgJiYgY2FsbEZyYW1lLT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFs
dWUoKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5kZXJlZigpOwotCiAg
ICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBjYWxsRnJhbWUtPnIocmVzdWx0KS5qc1ZhbHVl
KCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXR1cm5WYWx1ZS5pc09iamVjdCgpKSkKQEAg
LTQyMzgsNyArNDIyMiw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIGlmICghY2Fs
bEZyYW1lLT5yKGFjdGl2YXRpb25SZWcpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChnbG9iYWxEYXRhKSBKU0FjdGl2YXRpb24oY2FsbEZy
YW1lLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnIoYWN0aXZhdGlvblJlZykgPSBK
U1ZhbHVlKGFjdGl2YXRpb24pOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWlu
KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5jb3B5KCktPnB1c2goYWN0aXZhdGlvbikpOworICAg
ICAgICAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5wdXNoKGFjdGl2YXRpb24pKTsKICAgICAgICAgfQogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
QEAgLTQyNzcsNyArNDI2MSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIGlmIChw
cm90by5pc09iamVjdCgpKQogICAgICAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8p
LT5pbmhlcml0b3JJRCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBj
b25zdHJ1Y3Rvci0+c2NvcGUoKS5ub2RlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1
Y3R1cmUoKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5n
bG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CiAgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUih0aGlzUmVnaXN0ZXIpID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1l
LCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NyZWF0ZV90
aGlzKTsKQEAgLTQ2NDMsMTEgKzQ2MjcsNiBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICAgICBwcm9ncmFtLiBSZXR1cm4gY29udHJvbCB0byB0aGUgY2FsbGluZyBuYXRpdmUgY29kZS4K
ICAgICAgICAgKi8KIAotICAgICAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWlu
KCkpIHsKLSAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gY2FsbEZyYW1l
LT5zY29wZUNoYWluKCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2NvcGVDaGFpbi0+cmVmQ291bnQg
PiAxKTsKLSAgICAgICAgICAgIHNjb3BlQ2hhaW4tPmRlcmVmKCk7Ci0gICAgICAgIH0KICAgICAg
ICAgaW50IHJlc3VsdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIHJldHVybiBjYWxsRnJh
bWUtPnIocmVzdWx0KS5qc1ZhbHVlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKaW5kZXggZmRkMGQ0NzFmMzBjMTFiNTc2M2ZlY2YyYWJhODAwZjFiODVjMDE1NS4u
NTI0ZTU3NmI3ZjY5OWMwMjk1YzZiMWE1YmI2NjgwOGM4MTlhZGI0YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKCkKIHsKICAgICBzdG9y
ZTMyKHJlZ1QxLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZUNo
YWluKSArIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluLCBtX25vZGUpKSwgcmVnVDMpOyAvLyBu
ZXdTY29wZUNoYWluCisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNGdW5jdGlvbiwgbV9zY29wZUNoYWluKSksIHJlZ1QzKTsgLy8gbmV3U2NvcGVDaGFpbgogICAg
IHN0b3JlUHRyKHJlZ1QwLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBSZWdpc3RlckZpbGU6
OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBzdG9y
ZVB0cihyZWdUMywgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0ZXJGaWxlOjpTY29w
ZUNoYWluICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogfQpAQCAtMTk4
LDcgKzE5OCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUlELCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAgICAgLy8gRmFzdCB2ZXJzaW9u
IG9mIHN0YWNrIGZyYW1lIGluaXRpYWxpemF0aW9uLCBkaXJlY3RseSByZWxhdGl2ZSB0byBlZGku
CiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgb21pdHMgdG8gc2V0IHVwIFJlZ2lzdGVyRmlsZTo6Q29k
ZUJsb2NrLCB3aGljaCBpcyBzZXQgaW4gdGhlIGNhbGxlZQogCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZUNoYWluKSArIE9CSkVD
VF9PRkZTRVRPRihTY29wZUNoYWluLCBtX25vZGUpKSwgcmVnVDEpOyAvLyBuZXdTY29wZUNoYWlu
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwg
bV9zY29wZUNoYWluKSksIHJlZ1QxKTsgLy8gbmV3U2NvcGVDaGFpbgogCiAgICAgc3RvcmUzMihJ
bW0zMihhcmdDb3VudCksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIChyZWdpc3Rlck9mZnNl
dCArIFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3Mo
Y2FsbEZyYW1lUmVnaXN0ZXIsIChyZWdpc3Rlck9mZnNldCArIFJlZ2lzdGVyRmlsZTo6Q2FsbGVy
RnJhbWUpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGQ1MGYwNzc0MDdlZDc5OWM3
MjNmMmE0NDEwNjliY2Y2MTJjZWMyNmQuLmFjMjMxYTlhNTJhZTBlZmQzNjU3YTVlZDNlZTVhZjA1
M2ExNGQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZy
YW1lKCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBjYWxsZWUsIHJlZ1QxIGhvbGRzIGFyZ0NvdW50
CiAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0ZXJG
aWxlOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24s
IG1fc2NvcGVDaGFpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbiwgbV9ub2RlKSksIHJl
Z1QzKTsgLy8gc2NvcGVDaGFpbgorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09G
RlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGVDaGFpbikpLCByZWdUMyk7IC8vIHNjb3BlQ2hhaW4K
ICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0ZXJG
aWxlOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIGNh
bGxlZQogICAgIHN0b3JlUHRyKHJlZ1QzLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW4gKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7IC8vIHNjb3BlQ2hhaW4KIH0KQEAgLTEwNywxMiArMTA3LDYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcmV0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAotICAgIC8vIFdlIGNvdWxk
IEpJVCBnZW5lcmF0ZSB0aGUgZGVyZWYsIG9ubHkgY2FsbGluZyBvdXQgdG8gQyB3aGVuIHRoZSBy
ZWZjb3VudCBoaXRzIHplcm8uCi0gICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpIHsKLSAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVx
dWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
cmV0X3Njb3BlQ2hhaW4pLmNhbGwoKTsKLSAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGlu
ayh0aGlzKTsKLSAgICB9CiAgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIGVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMsIHJlZ1Qy
KTsKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC0xMjYsMTMgKzEyMCw2IEBAIHZvaWQgSklU
OjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CiAgICAgdW5zaWduZWQgdGhpc1JlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CiAKLSAgICAvLyBXZSBjb3VsZCBKSVQgZ2VuZXJhdGUgdGhlIGRlcmVmLCBvbmx5IGNhbGxp
bmcgb3V0IHRvIEMgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLgotICAgIGlmIChtX2NvZGVC
bG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKSB7Ci0gICAgICAgIEp1bXAgYWN0aXZhdGlvbk5v
dENyZWF0ZWQgPSBicmFuY2gzMihFcXVhbCwgdGFnRm9yKG1fY29kZUJsb2NrLT5hY3RpdmF0aW9u
UmVnaXN0ZXIoKSksIEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKLSAgICAgICAgSklU
U3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29wZUNoYWluKS5jYWxsKCk7Ci0gICAgICAgIGFj
dGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7Ci0gICAgfQotCiAgICAgZW1pdExvYWQocmVz
dWx0LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90SlNDZWxsID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCByZWdUMik7CkBA
IC0yOTEsNyArMjc4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2EKIAogICAgIC8vIEZhc3Qg
dmVyc2lvbiBvZiBzdGFjayBmcmFtZSBpbml0aWFsaXphdGlvbiwgZGlyZWN0bHkgcmVsYXRpdmUg
dG8gZWRpLgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIG9taXRzIHRvIHNldCB1cCBSZWdpc3RlckZp
bGU6OkNvZGVCbG9jaywgd2hpY2ggaXMgc2V0IGluIHRoZSBjYWxsZWUKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlQ2hhaW4pICsg
T0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW4sIG1fbm9kZSkpLCByZWdUMik7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZUNoYWlu
KSksIHJlZ1QyKTsKIAogICAgIHN0b3JlMzIoSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCAocmVnaXN0ZXJPZmZzZXQgKyBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291
bnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIHN0b3JlUHRy
KGNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCAocmVnaXN0ZXJP
ZmZzZXQgKyBSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lKSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IDRlYTVlYzBjNWRlZGM3Njg5NjBhOWMxZTcyODlkZTUxMTg0NmRmMzMuLmZjNzY5ZGJm
ZDg1Y2E1MmVmYjM4MjY0OGYyYzAxYWZjOWM0N2YwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzMwLDkgKzMzMCw2IEBAIHZvaWQgSklUOjplbWl0X29w
X21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9lbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBpZiAobV9jb2Rl
QmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkKLSAgICAgICAgSklUU3R1YkNhbGwodGhpcywg
Y3RpX29wX2VuZCkuY2FsbCgpOwotCiAgICAgQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0ZXIgIT0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgcmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVn
aXN0ZXJGaWxlOjpSZXR1cm5QQyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKQEAgLTU0MywxMiArNTQwLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdGVhcl9vZmZfYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29w
X3JldChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIC8vIFdlIGNvdWxk
IEpJVCBnZW5lcmF0ZSB0aGUgZGVyZWYsIG9ubHkgY2FsbGluZyBvdXQgdG8gQyB3aGVuIHRoZSBy
ZWZjb3VudCBoaXRzIHplcm8uCi0gICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpIHsKLSAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaFRlc3RQ
dHIoWmVybywgYWRkcmVzc0ZvcihtX2NvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpKTsK
LSAgICAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29wZUNoYWluKS5jYWxsKCk7
Ci0gICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7Ci0gICAgfQogICAgIEFT
U0VSVChjYWxsRnJhbWVSZWdpc3RlciAhPSByZWdUMSk7CiAgICAgQVNTRVJUKHJlZ1QxICE9IHJl
dHVyblZhbHVlUmVnaXN0ZXIpOwogICAgIEFTU0VSVChyZXR1cm5WYWx1ZVJlZ2lzdGVyICE9IGNh
bGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTU2OSwxMyArNTYwLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cmV0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29w
X3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIC8vIFdlIGNvdWxkIEpJVCBnZW5lcmF0ZSB0aGUgZGVyZWYsIG9ubHkgY2FsbGluZyBvdXQg
dG8gQyB3aGVuIHRoZSByZWZjb3VudCBoaXRzIHplcm8uCi0gICAgaWYgKG1fY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpIHsKLSAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRl
ZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgYWRkcmVzc0ZvcihtX2NvZGVCbG9jay0+YWN0aXZhdGlv
blJlZ2lzdGVyKCkpKTsKLSAgICAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX3JldF9zY29w
ZUNoYWluKS5jYWxsKCk7Ci0gICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7
Ci0gICAgfQotCiAgICAgQVNTRVJUKGNhbGxGcmFtZVJlZ2lzdGVyICE9IHJlZ1QxKTsKICAgICBB
U1NFUlQocmVnVDEgIT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgQVNTRVJUKHJldHVyblZh
bHVlUmVnaXN0ZXIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGMzYzAxYzQ4MmZmOTliOTk3ZDBiN2M4
NGIwYzNjZWIzOGFjNjQ5ZGQuLjBjODQwMmJmM2JiMDEzZDJiMDMxMzM0NDQ2ODE1MjFkOWM5MGM5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
QEAgLTQ0OCw4ICs0NDgsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCkpCi0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9lbmQpLmNhbGwoKTsK
ICAgICBBU1NFUlQocmV0dXJuVmFsdWVSZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAg
ICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEsIHJlZ1Qw
KTsKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzKGNhbGxGcmFt
ZVJlZ2lzdGVyLCBSZWdpc3RlckZpbGU6OlJldHVyblBDICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRl
eCA4NWQ1ZTBkMTljYjM0OGU2ZGIwZjE3YzY4MWYyZjcxMzk1YjgwNjc1Li5lNTBhYTM2MDZiYzU0
M2JjNzQ3YjUzODQ5MjE2Y2Y4NmViY2RhNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2NyZWF0ZV90aGlzKQogICAgIGlmIChwcm90by5pc09iamVjdCgpKQog
ICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKCk7CiAgICAg
ZWxzZQotICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS5ub2RlKCktPmds
b2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgc3RydWN0dXJlID0g
Y29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwg
c3RydWN0dXJlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEy
MDQsMTUgKzEyMDQsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Y29udmVydF90aGlzX3N0cmljdCkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2VuZCkKLXsKLSAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbiA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7Ci0gICAgQVNTRVJUKHNj
b3BlQ2hhaW4tPnJlZkNvdW50ID4gMSk7Ci0gICAgc2NvcGVDaGFpbi0+ZGVyZWYoKTsKLX0KLQog
REVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2FkZCkKIHsKICAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0xODQ3LDcgKzE4MzgsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9qaXRDb21waWxlKQogICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCkp
OwogICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKLSAgICBT
Y29wZUNoYWluTm9kZSogY2FsbERhdGFTY29wZUNoYWluID0gZnVuY3Rpb24tPnNjb3BlKCkubm9k
ZSgpOworICAgIFNjb3BlQ2hhaW5Ob2RlKiBjYWxsRGF0YVNjb3BlQ2hhaW4gPSBmdW5jdGlvbi0+
c2NvcGUoKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBleGVjdXRhYmxlLT5jb21waWxlRm9yQ2Fs
bChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluKTsKICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBlcnJvcjsKQEAgLTE4NjgsNyArMTg1OSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCBvcF9jb25zdHJ1Y3Rfaml0Q29tcGlsZSkKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGFzRnVuY3Rpb24oc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
IWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgU2NvcGVDaGFpbk5vZGUq
IGNhbGxEYXRhU2NvcGVDaGFpbiA9IGZ1bmN0aW9uLT5zY29wZSgpLm5vZGUoKTsKKyAgICBTY29w
ZUNoYWluTm9kZSogY2FsbERhdGFTY29wZUNoYWluID0gZnVuY3Rpb24tPnNjb3BlKCk7CiAgICAg
SlNPYmplY3QqIGVycm9yID0gZXhlY3V0YWJsZS0+Y29tcGlsZUZvckNvbnN0cnVjdChzdGFja0Zy
YW1lLmNhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluKTsKICAgICBpZiAoZXJyb3IpIHsKICAg
ICAgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBlcnJv
cjsKQEAgLTE5MjksNyArMTkyMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9j
YWxsX2FyaXR5Q2hlY2spCiAgICAgY2FsbEZyYW1lLT5zZXRDYWxsZXJGcmFtZShvbGRDYWxsRnJh
bWUpOwogICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291
bnQpOwogICAgIGNhbGxGcmFtZS0+c2V0Q2FsbGVlKGNhbGxlZSk7Ci0gICAgY2FsbEZyYW1lLT5z
ZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGUoKS5ub2RlKCkpOworICAgIGNhbGxGcmFtZS0+c2V0
U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlKCkpOwogICAgIGNhbGxGcmFtZS0+c2V0UmV0dXJuUEMo
cGMudmFsdWUoKSk7CiAKICAgICBBU1NFUlQoKHZvaWQqKWNhbGxGcmFtZSA8PSBzdGFja0ZyYW1l
LnJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwpAQCAtMTk4OCw3ICsxOTc5LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogICAgIGNhbGxGcmFtZS0+
c2V0Q2FsbGVyRnJhbWUob2xkQ2FsbEZyYW1lKTsKICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50KTsKICAgICBjYWxsRnJhbWUtPnNldENhbGxlZShj
YWxsZWUpOwotICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlKCkubm9k
ZSgpKTsKKyAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZSgpKTsKICAg
ICBjYWxsRnJhbWUtPnNldFJldHVyblBDKHBjLnZhbHVlKCkpOwogCiAgICAgQVNTRVJUKCh2b2lk
KiljYWxsRnJhbWUgPD0gc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUtPmVuZCgpKTsKQEAgLTIwMDks
NyArMjAwMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0NhbGwp
CiAgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LmFkZHJlc3NGb3JDYWxsKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Y29tcGlsZUZvckNhbGwoY2FsbEZyYW1lLCBjYWxsZWUtPnNjb3BlKCkubm9kZSgpKTsKKyAg
ICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yQ2Fs
bChjYWxsRnJhbWUsIGNhbGxlZS0+c2NvcGUoKSk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAg
ICAgICAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTIwNDMs
NyArMjAzNCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0NvbnN0
cnVjdCkKICAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JD
b25zdHJ1Y3QoKS5hZGRyZXNzRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmNvbXBpbGVGb3JDb25zdHJ1Y3QoY2FsbEZyYW1lLCBjYWxsZWUtPnNjb3Bl
KCkubm9kZSgpKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5jb21waWxlRm9yQ29uc3RydWN0KGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgpKTsKICAgICAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgUmV0dXJuQWRkcmVzc1B0cihjYWxsRnJhbWUt
PnJldHVyblBDKCkpLCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICAgICAgICAgIHJldHVybiAw
OwpAQCAtMjA3MCw3ICsyMDYxLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBv
cF9wdXNoX2FjdGl2YXRpb24pCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwogCiAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChzdGFja0ZyYW1lLmdsb2Jh
bERhdGEpIEpTQWN0aXZhdGlvbihzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKSkpOwotICAgIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zZXRTY29wZUNoYWlu
KHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmNvcHkoKS0+cHVzaChhY3RpdmF0
aW9uKSk7CisgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CiAgICAgcmV0dXJu
IGFjdGl2YXRpb247CiB9CiAKQEAgLTIxNzQsMTQgKzIxNjUsNiBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcF9wcm9maWxlX2RpZF9jYWxsKQogICAgICgqc3RhY2tGcmFtZS5lbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UpLT5kaWRFeGVjdXRlKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCwgb3BfcmV0X3Njb3BlQ2hhaW4pCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNr
RnJhbWUpOwotCi0gICAgQVNTRVJUKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKLSAgICBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+c2NvcGVD
aGFpbigpLT5kZXJlZigpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9w
X25ld19hcnJheSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBA
IC0zMDA4LDcgKzI5OTEsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25l
d19mdW5jX2V4cCkKICAgICAgKi8KICAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkp
IHsKICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IG5l
dyAoY2FsbEZyYW1lKSBKU1N0YXRpY1Njb3BlT2JqZWN0KGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5h
bWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgZnVuYy0+c2NvcGUo
KS5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpOworICAgICAgICBmdW5jLT5zZXRTY29wZShjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2Jq
ZWN0KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZ1bmM7CkBAIC0zMTE4LDcgKzMxMDEsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfY2FsbF9ldmFsKQogICAgIFJl
Z2lzdGVyKiBuZXdDYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0ZXJP
ZmZzZXQ7CiAgICAgUmVnaXN0ZXIqIGFyZ3YgPSBuZXdDYWxsRnJhbWUgLSBSZWdpc3RlckZpbGU6
OkNhbGxGcmFtZUhlYWRlclNpemUgLSBhcmdDb3VudDsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IGFyZ3ZbMF0uanNWYWx1ZSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0OworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0Lmdl
dCgpOwogCiAgICAgaWYgKGJhc2VWYWx1ZSA9PSBnbG9iYWxPYmplY3QgJiYgZnVuY1ZhbCA9PSBn
bG9iYWxPYmplY3QtPmV2YWxGdW5jdGlvbigpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
aW50ZXJwcmV0ZXItPmNhbGxFdmFsKGNhbGxGcmFtZSwgcmVnaXN0ZXJGaWxlLCBhcmd2LCBhcmdD
b3VudCwgcmVnaXN0ZXJPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCmlu
ZGV4IDY2ZWRmNDUxMzI0Zjg5MjEyMTQyODJkMmMwMmFhNDc4YzU2YTQ5NjMuLjY1ZjZhNTViYzQx
NjZmOGMyYTI5OTQ1NjZmODgzNmFhZDgwN2JlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgKQEAgLTM5MCw3ICszOTAsNiBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9T
VFVCIGN0aV9vcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsK
ICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2V0dGVyKFNUVUJfQVJHU19ERUNMQVJBVElP
Tik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X3NldHRlcihTVFVCX0FSR1NfREVDTEFS
QVRJT04pOwotICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3JldF9zY29wZUNoYWluKFNUVUJfQVJH
U19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfdGVhcl9vZmZfYWN0aXZh
dGlvbihTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rl
YXJfb2ZmX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NU
VUIgY3RpX29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcihTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRleCBhODYyZWEwMWU1
MmQ3NjFmZDM1MThjM2Q4ODE2ZDU2YWZjYmQ1ZTJkLi4yNWE4OTE2NDE5NjA4ZTI2ODRhYjRjOTNi
NGMwN2FkZTNiMjg2YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKIAogdXNpbmcgc3RkOjptaW47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggZWVi
OGIwZDQzZDMxMWEyMDNlN2U2NmJlZmZlMzVlNjM5ZWIxOTEzMS4uODNkOGJkODVhZGQxMmE5NGZk
OGM3YjgxMTQ4N2U1NzFiNWE5MDQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKQEAgLTQ3LDE5ICs0NywxOSBAQCBDb21wbGV0aW9uIGNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgIHJldHVy
biBDb21wbGV0aW9uKE5vcm1hbCk7CiB9CiAKLUNvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluJiBzY29wZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTVmFsdWUgdGhpc1ZhbHVlKQorQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
VmFsdWUgdGhpc1ZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogICAgIEFTU0VSVChl
eGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVhZERhdGEoKS5jdXJy
ZW50SWRlbnRpZmllclRhYmxlKCkpOwogCiAgICAgUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxlPiBw
cm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOwotICAgIEpT
T2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNvbXBpbGUoZXhlYywgc2NvcGVDaGFpbi5ub2RlKCkp
OworICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNvbXBpbGUoZXhlYywgc2NvcGVDaGFp
bik7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihUaHJvdywgZXJy
b3IpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkgPyBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkgOiB0aGlz
VmFsdWUudG9PYmplY3QoZXhlYyk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVy
cHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbS5nZXQoKSwgZXhlYywgc2NvcGVDaGFpbi5ub2RlKCks
IHRoaXNPYmopOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhl
Y3V0ZShwcm9ncmFtLmdldCgpLCBleGVjLCBzY29wZUNoYWluLCB0aGlzT2JqKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4
ZWMtPmV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCmluZGV4IDYzYjMxNWUxOGY2MzlkZDg0ZjVlYmNhOGE1ZGVhMDc3ZjQzMmUzMjAuLjFkZDI1
ZmQxMWFlM2ZkYzJlODU3ODNhZDE1MjRjNmYyYjBhY2I2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIFNjb3BlQ2hhaW47CisgICAg
Y2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKIAogICAgIGVudW0g
Q29tcGxUeXBlIHsgTm9ybWFsLCBCcmVhaywgQ29udGludWUsIFJldHVyblZhbHVlLCBUaHJvdywg
SW50ZXJydXB0ZWQsIFRlcm1pbmF0ZWQgfTsKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfTsKIAogICAgIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29u
c3QgU291cmNlQ29kZSYpOwotICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUo
KSk7CisgICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggZDRiODIzMjY2MjRhMTQ1ZDhjNjllZDZmMDE3YjY3YzIw
ZDBlNTE5Zi4uNTk3ZjFlOWExODViM2U3ZWIxNmRjNTQwMzg0YWVkM2VjZTI5OWQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkRhdGVDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXgg
YzZiY2FlY2U1ODRkNzg0MjlhMDg1NGE1YTk4ZDFiYWViNjFiYzRlZi4uNjA3YTJjMmQ3NWQ2MjZl
OWUyYTg5ODljMmZiNzA0YzM3MTNjMTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTEwMSwxMiArMTAxLDExIEBAIEpTT2JqZWN0KiBFdmFs
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlCiAgICAgfQogICAgIHJlY29yZFBhcnNlKGV2YWxOb2RlLT5mZWF0dXJlcygpLCBl
dmFsTm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZXZhbE5vZGUtPmxpbmVObygpLCBldmFs
Tm9kZS0+bGFzdExpbmUoKSk7CiAKLSAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oc2NvcGVDaGFp
bk5vZGUpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluLmds
b2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNo
YWluTm9kZS0+Z2xvYmFsT2JqZWN0LmdldCgpOwogCiAgICAgQVNTRVJUKCFtX2V2YWxDb2RlQmxv
Y2spOwotICAgIG1fZXZhbENvZGVCbG9jayA9IGFkb3B0UHRyKG5ldyBFdmFsQ29kZUJsb2NrKHRo
aXMsIGdsb2JhbE9iamVjdCwgc291cmNlKCkucHJvdmlkZXIoKSwgc2NvcGVDaGFpbi5sb2NhbERl
cHRoKCkpKTsKLSAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0
cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3IoZXZhbE5vZGUuZ2V0KCksIHNjb3BlQ2hhaW4sIG1fZXZh
bENvZGVCbG9jay0+c3ltYm9sVGFibGUoKSwgbV9ldmFsQ29kZUJsb2NrLmdldCgpKSkpOworICAg
IG1fZXZhbENvZGVCbG9jayA9IGFkb3B0UHRyKG5ldyBFdmFsQ29kZUJsb2NrKHRoaXMsIGdsb2Jh
bE9iamVjdCwgc291cmNlKCkucHJvdmlkZXIoKSwgc2NvcGVDaGFpbk5vZGUtPmxvY2FsRGVwdGgo
KSkpOworICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5l
dyBCeXRlY29kZUdlbmVyYXRvcihldmFsTm9kZS5nZXQoKSwgc2NvcGVDaGFpbk5vZGUsIG1fZXZh
bENvZGVCbG9jay0+c3ltYm9sVGFibGUoKSwgbV9ldmFsQ29kZUJsb2NrLmdldCgpKSkpOwogICAg
IGlmICgoZXhjZXB0aW9uID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpKSkgewogICAgICAgICBtX2V2
YWxDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgZXZhbE5vZGUtPmRlc3Ryb3lEYXRhKCk7CkBA
IC0xNTQsMTEgKzE1MywxMCBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzYwogICAgIH0KICAgICBy
ZWNvcmRQYXJzZShwcm9ncmFtTm9kZS0+ZmVhdHVyZXMoKSwgcHJvZ3JhbU5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIHByb2dyYW1Ob2RlLT5saW5lTm8oKSwgcHJvZ3JhbU5vZGUtPmxhc3RM
aW5lKCkpOwogCi0gICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKTsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3Qo
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVDaGFpbk5vZGUtPmds
b2JhbE9iamVjdC5nZXQoKTsKICAgICAKICAgICBtX3Byb2dyYW1Db2RlQmxvY2sgPSBhZG9wdFB0
cihuZXcgUHJvZ3JhbUNvZGVCbG9jayh0aGlzLCBHbG9iYWxDb2RlLCBnbG9iYWxPYmplY3QsIHNv
dXJjZSgpLnByb3ZpZGVyKCkpKTsKLSAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVy
YXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3IocHJvZ3JhbU5vZGUuZ2V0KCksIHNj
b3BlQ2hhaW4sICZnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCksIG1fcHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKSkpKTsKKyAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9w
dFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3IocHJvZ3JhbU5vZGUuZ2V0KCksIHNjb3BlQ2hhaW5O
b2RlLCAmZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLCBtX3Byb2dyYW1Db2RlQmxvY2suZ2V0
KCkpKSk7CiAgICAgaWYgKChleGNlcHRpb24gPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCkpKSB7CiAg
ICAgICAgIG1fcHJvZ3JhbUNvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBwcm9ncmFtTm9kZS0+
ZGVzdHJveURhdGEoKTsKQEAgLTE5NCwxMiArMTkyLDExIEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNo
YWluCiAgICAgYm9keS0+ZmluaXNoUGFyc2luZyhtX3BhcmFtZXRlcnMsIG1fbmFtZSk7CiAgICAg
cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogCi0gICAgU2NvcGVDaGFpbiBz
Y29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC5nZXQoKTsKIAogICAgIEFT
U0VSVCghbV9jb2RlQmxvY2tGb3JDYWxsKTsKICAgICBtX2NvZGVCbG9ja0ZvckNhbGwgPSBhZG9w
dFB0cihuZXcgRnVuY3Rpb25Db2RlQmxvY2sodGhpcywgRnVuY3Rpb25Db2RlLCBnbG9iYWxPYmpl
Y3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCksIGZhbHNlKSk7
Ci0gICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5
dGVjb2RlR2VuZXJhdG9yKGJvZHkuZ2V0KCksIHNjb3BlQ2hhaW4sIG1fY29kZUJsb2NrRm9yQ2Fs
bC0+c3ltYm9sVGFibGUoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSkpOworICAgIE93blB0
cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVy
YXRvcihib2R5LmdldCgpLCBzY29wZUNoYWluTm9kZSwgbV9jb2RlQmxvY2tGb3JDYWxsLT5zeW1i
b2xUYWJsZSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpKSk7CiAgICAgaWYgKChleGNlcHRp
b24gPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCkpKSB7CiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ2Fs
bC5jbGVhcigpOwogICAgICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtMjQwLDEyICsyMzcs
MTEgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdElu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKG1f
cGFyYW1ldGVycywgbV9uYW1lKTsKICAgICByZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBi
b2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExp
bmUoKSk7CiAKLSAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oc2NvcGVDaGFpbk5vZGUpOwotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluLmdsb2JhbE9iamVjdCgp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluTm9kZS0+Z2xv
YmFsT2JqZWN0LmdldCgpOwogCiAgICAgQVNTRVJUKCFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7
CiAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QgPSBhZG9wdFB0cihuZXcgRnVuY3Rpb25Db2Rl
QmxvY2sodGhpcywgRnVuY3Rpb25Db2RlLCBnbG9iYWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVy
KCksIHNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCksIHRydWUpKTsKLSAgICBPd25QdHI8Qnl0ZWNvZGVH
ZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3IoYm9keS5n
ZXQoKSwgc2NvcGVDaGFpbiwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnN5bWJvbFRhYmxlKCks
IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKSkpOworICAgIE93blB0cjxCeXRlY29kZUdl
bmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihib2R5Lmdl
dCgpLCBzY29wZUNoYWluTm9kZSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnN5bWJvbFRhYmxl
KCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKSkpOwogICAgIGlmICgoZXhjZXB0aW9u
ID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpKSkgewogICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0
cnVjdC5jbGVhcigpOwogICAgICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCA5MzNiMTFmOTljNGI2YjNkNGVlZTQyODI5NWVjZjZmZTJmZmExNWNkLi5lNjQyNTk0ODc5MTAz
ZGM0ODY4M2FmNjQyNDYwMTBkZTU0MTVkZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMTA2LDggKzEwNiw4
IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKGdsb2Jh
bE9iamVjdCwgJmdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZXhlYy0+Z2xvYmFsVGhpc1ZhbHVl
KCkpOwotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24sIHNj
b3BlQ2hhaW4ubm9kZSgpKTsKKyAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiA9IG5ldyAo
ZXhlYykgU2NvcGVDaGFpbk5vZGUoMCwgZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCBmdW5jdGlvbiwgc2NvcGVDaGFpbik7CiB9CiAKIC8vIEVDTUEgMTUu
My4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCmluZGV4IDE1ZjZkZThkOWRi
M2Q3ZTdmNjc0NTRiNjA3MzEzMWZmYWYwZTk0MjMuLmE5NDFjZmE5NDI4ZGI5ZTI1NzhlZjJlZjhi
OThlN2NkYzU5Zjc2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDI4Y2ZkMGFlNDAwNmJjZDExMTQ2N2I2ZTIwYmYx
NGI2MWMzYmFkY2IuLjM5OTI0MTg0ODg4ZDg1YWYzMzdlMWQ2ZDk4ZjE2ZWZmNzM3ZTEzMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJOdW1lcmljU3Ry
aW5ncy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlIDxuZXc+IC8vIGZvciBw
bGFjZW1lbnQgbmV3CiAjaW5jbHVkZSA8c3RyaW5nLmg+IC8vIGZvciBzdHJsZW4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApp
bmRleCAwZTdhZDFjN2Y0NDU4OTRhM2E1ZDkxMzk0ZmE3ZDZhZWRjOWY2ODE2Li43MzEzZDUyNTI0
NTM2NDI1YzQ0MTllMDY0YzYyMmJjODFmMTBkYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNw
YWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEpT
Q2VsbChTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggMmJlNjVjYzdiNjhjOWZhMWMxMmFiYzI3NGVmNjI4MWI2ZDNjZTEzMC4u
MmFkZTQ0MTVkYzhhMjM1MzQxZmEwYjI3OTIxMjhjNTg4MDg2MTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU5LDcgKzU5LDYgQEAgYm9v
bCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0CiBKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAg
IDogQmFzZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUoYWRvcHRSZWYobmV3IFZQdHJI
YWNrRXhlY3V0YWJsZSgpKSkKLSAgICAsIG1fc2NvcGVDaGFpbihOb1Njb3BlQ2hhaW4oKSkKIHsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQpAQCAtNjcsNyArNjYsNyBAQCBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1
dGFibGU+IHRodW5rKQogICAgIDogQmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAs
IG1fZXhlY3V0YWJsZSh0aHVuaykKLSAgICAsIG1fc2NvcGVDaGFpbihnbG9iYWxPYmplY3QtPmds
b2JhbFNjb3BlQ2hhaW4oKSkKKyAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUu
aXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwpAQCAtNzcsNyArNzYsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogICAgIDog
QmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5n
bG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGZ1bmMpKQotICAgICwgbV9zY29wZUNoYWluKGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQorICAgICwgbV9zY29wZUNoYWluKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJp
bmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC04NSw5ICs4NCw5IEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzCiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBO
b25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IGV4ZWN1dGFibGUsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKLSAgICA6IEJhc2Uoc2NvcGVDaGFpbk5vZGUtPmdsb2Jh
bE9iamVjdCwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSkKKyAgICA6IEJhc2Uoc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC5nZXQoKSwgc2NvcGVD
aGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fZXhl
Y3V0YWJsZShleGVjdXRhYmxlKQotICAgICwgbV9zY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQor
ICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgc2NvcGVDaGFpbk5v
ZGUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9leGVjdXRhYmxl
LmdldCgpKS0+bmFtZSgpOwpAQCAtMTUxLDcgKzE1MCw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIEJhc2U6Om1hcmtDaGlsZHJlbiht
YXJrU3RhY2spOwogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgewogICAgICAgICBqc0V4ZWN1
dGFibGUoKS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwotICAgICAgICBzY29wZSgpLm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zY29wZUNo
YWluKTsKICAgICB9CiB9CiAKQEAgLTE2Miw3ICsxNjEsNyBAQCBDYWxsVHlwZSBKU0Z1bmN0aW9u
OjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAgICAgIHJldHVybiBDYWxsVHlw
ZUhvc3Q7CiAgICAgfQogICAgIGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRXhl
Y3V0YWJsZSgpOwotICAgIGNhbGxEYXRhLmpzLnNjb3BlQ2hhaW4gPSBzY29wZSgpLm5vZGUoKTsK
KyAgICBjYWxsRGF0YS5qcy5zY29wZUNoYWluID0gc2NvcGUoKTsKICAgICByZXR1cm4gQ2FsbFR5
cGVKUzsKIH0KIApAQCAtMTk2LDcgKzE5NSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOCiAg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9j
YXRpb24ocHJvcGVydHlOYW1lKTsKIAogICAgICAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAg
ICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc2Nv
cGUoKS5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc2NvcGUo
KS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7CiAgICAgICAgICAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90
b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBsb2NhdGlvbiA9IGdl
dERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CkBAIC0zMjYsNyArMzI1LDcgQEAgQ29uc3Ry
dWN0VHlwZSBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCiAgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBDb25z
dHJ1Y3RUeXBlTm9uZTsKICAgICBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9
IGpzRXhlY3V0YWJsZSgpOwotICAgIGNvbnN0cnVjdERhdGEuanMuc2NvcGVDaGFpbiA9IHNjb3Bl
KCkubm9kZSgpOworICAgIGNvbnN0cnVjdERhdGEuanMuc2NvcGVDaGFpbiA9IHNjb3BlKCk7CiAg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVKUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGVkYzBhOGE1Y2QxZTFhNzRlZTk1NjgwNDNhYjdhZThk
YmM3ZjJjZDYuLjA4OWY0MmUyYzIzYjk4MTEyMmUyMmMyMmEyMGI4M2MwZjAxNjNiYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTUzLDE1ICs1Mywx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShF
eGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUo
RXhlY1N0YXRlKik7CiAKLSAgICAgICAgU2NvcGVDaGFpbiYgc2NvcGUoKQorICAgICAgICBTY29w
ZUNoYWluTm9kZSogc2NvcGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2NvcGVDaGFpbjsK
KyAgICAgICAgICAgIHJldHVybiBtX3Njb3BlQ2hhaW4uZ2V0KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgdm9pZCBzZXRTY29wZShjb25zdCBTY29wZUNoYWluJiBzY29wZUNoYWluKQorICAgICAgICB2
b2lkIHNldFNjb3BlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUoKSk7Ci0gICAgICAgICAgICBtX3Njb3BlQ2hhaW4gPSBzY29wZUNoYWluOworICAg
ICAgICAgICAgbV9zY29wZUNoYWluLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzY29wZUNoYWluKTsK
ICAgICAgICAgfQogCiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgUmVmUHRyPEV4ZWN1dGFi
bGVCYXNlPiBtX2V4ZWN1dGFibGU7Ci0gICAgICAgIFNjb3BlQ2hhaW4gbV9zY29wZUNoYWluOwor
ICAgICAgICBXcml0ZUJhcnJpZXI8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFpbjsKICAgICB9
OwogCiAgICAgSlNGdW5jdGlvbiogYXNGdW5jdGlvbihKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDVlNTNmMjc4ZjMzYThk
MzBjZmJiNDRmOWFjMDEwYmE3ZGZhMzEzODkuLjQ5NzBlYjI0YTE3MTNlNjBiYjczNzZmNDYyZGE2
OWIyZjViMmI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcApAQCAtMTMyLDYgKzEzMiw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAg
ICAgLCBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgZ2V0dGVyU2V0dGVyU3RydWN0dXJl
KEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIGFwaVdyYXBw
ZXJTdHJ1Y3R1cmUoSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkp
CisgICAgLCBzY29wZUNoYWluTm9kZVN0cnVjdHVyZShTY29wZUNoYWluTm9kZTo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlKEpTQ2Vs
bDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKSkKICAgICAsIGlkZW50aWZpZXJUYWJsZShnbG9iYWxE
YXRhVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFi
bGUoKSA6IGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpKQogICAgICwgcHJvcGVydHlOYW1lcyhuZXcg
Q29tbW9uSWRlbnRpZmllcnModGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCmluZGV4IDRmN2NmZGMzZDFlM2JmZmY2NTgwY2FhNjE0ZmNjZDkxM2Fj
YjQyZGEuLmY0Zjc2Yzk4NzZkYTU5Mzk5NjJiMjU0YjgyYzM5MzYzNDMzNDMwYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xNTMsNiArMTUz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJT
ZXR0ZXJTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFwaVdyYXBwZXJTdHJ1
Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJl
OwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsK
IAogICAgICAgICBzdGF0aWMgdm9pZCBzdG9yZVZQdHJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDY0ZDA1ZTlhNzI0NDBi
MDBjZjQ4OWJiYTNmZDRlMGRjYTg2Y2FhNi4uNDBjZTNlNWJiY2RjNTQzZDU1ZTE2ZmUzNzUxYTBk
N2MyZTE1MzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMTEyLDkgKzExMiw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkKICAgICBzdHJ1Y3R1cmUoKS0+ZGlzYWJsZVNwZWNpZmlj
RnVuY3Rpb25UcmFja2luZygpOwogCiAgICAgZCgpLT5nbG9iYWxEYXRhID0gSGVhcDo6aGVhcCh0
aGlzKS0+Z2xvYmFsRGF0YSgpOwotICAgIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbiA9IFNjb3BlQ2hh
aW4odGhpcywgZCgpLT5nbG9iYWxEYXRhLmdldCgpLCB0aGlzLCB0aGlzVmFsdWUpOworICAgIGQo
KS0+Z2xvYmFsU2NvcGVDaGFpbi5zZXQoKmQoKS0+Z2xvYmFsRGF0YSwgdGhpcywgbmV3IChkKCkt
Pmdsb2JhbERhdGEuZ2V0KCkpIFNjb3BlQ2hhaW5Ob2RlKDAsIHRoaXMsIGQoKS0+Z2xvYmFsRGF0
YS5nZXQoKSwgdGhpcywgdGhpc1ZhbHVlKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdDo6Z2xvYmFs
RXhlYygpLT5pbml0KDAsIDAsIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbi5ub2RlKCksIENhbGxGcmFt
ZTo6bm9DYWxsZXIoKSwgMCwgMCk7CisgICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+
aW5pdCgwLCAwLCBkKCktPmdsb2JhbFNjb3BlQ2hhaW4uZ2V0KCksIENhbGxGcmFtZTo6bm9DYWxs
ZXIoKSwgMCwgMCk7CiAKICAgICBkKCktPmRlYnVnZ2VyID0gMDsKIApAQCAtMzE5LDYgKzMxOSw4
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFj
aykKIHsKICAgICBKU1ZhcmlhYmxlT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKICAg
ICAKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5nbG9iYWxTY29wZUNoYWluKTsK
KwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPnJlZ0V4cENvbnN0cnVjdG9yKTsK
ICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5lcnJvckNvbnN0cnVjdG9yKTsKICAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA3
N2M0N2Q1MzBiYzNlNDM4NDZhZjY3YzVmYWY5N2Y3OGE1NTc0Y2E5Li5jNTY3NWU2MzAwYjcyMjI2
YjBiMTE0MjkwZWNlMmNhYzhmM2U4MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YSgmc3ltYm9sVGFibGUsIDAp
CiAgICAgICAgICAgICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAg
ICAgLCByZWdpc3RlckFycmF5U2l6ZSgwKQotICAgICAgICAgICAgICAgICwgZ2xvYmFsU2NvcGVD
aGFpbihOb1Njb3BlQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICAsIGdsb2JhbFNjb3BlQ2hhaW4o
KQogICAgICAgICAgICAgICAgICwgd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFu
ZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4w
KSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICB9CkBAIC04Myw3ICs4Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgICAgICBEZWJ1Z2dlciogZGVidWdnZXI7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIFNjb3BlQ2hhaW4gZ2xvYmFsU2NvcGVDaGFpbjsKKyAgICAgICAgICAg
IFdyaXRlQmFycmllcjxTY29wZUNoYWluTm9kZT4gZ2xvYmFsU2NvcGVDaGFpbjsKICAgICAgICAg
ICAgIFJlZ2lzdGVyIGdsb2JhbENhbGxGcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRl
clNpemVdOwogCiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwQ29uc3RydWN0b3I+IHJl
Z0V4cENvbnN0cnVjdG9yOwpAQCAtMjI4LDcgKzIyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBTY29wZUNoYWluJiBnbG9iYWxTY29wZUNoYWlu
KCkgeyByZXR1cm4gZCgpLT5nbG9iYWxTY29wZUNoYWluOyB9CisgICAgICAgIFNjb3BlQ2hhaW5O
b2RlKiBnbG9iYWxTY29wZUNoYWluKCkgeyByZXR1cm4gZCgpLT5nbG9iYWxTY29wZUNoYWluLmdl
dCgpOyB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMGRiNDE4MjkwN2M3ZTQ0OGQ0
OGRkNzY4MWRhNDA5ZGQ2NmJkZjkyYS4uZGUxMzAwYWQ1NDIwOWQ5MTIxNzhiODdmYjQ1YzdjNjMw
MzMyY2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDUwLDExICs0NTAsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2VkT2JqZWN0KTsKIAogICAgIFJlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFr
ZVNvdXJjZShzKSwgZmFsc2UpOwotICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUo
ZXhlYywgc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9i
YWxTY29wZUNoYWluKCkubm9kZSgpKTsKKyAgICBKU09iamVjdCogZXJyb3IgPSBldmFsLT5jb21w
aWxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+
Z2xvYmFsU2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgZXJyb3IpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGV2YWwuZ2V0KCksIGV4ZWMsIHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVD
aGFpbigpLm5vZGUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+aW50ZXJw
cmV0ZXIoKS0+ZXhlY3V0ZShldmFsLmdldCgpLCBleGVjLCB0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDxKU0dsb2JhbE9iamVjdCo+KHVud3JhcHBlZE9iamVjdCktPmdsb2JhbFNjb3BlQ2hhaW4oKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApp
bmRleCA2ZTYzMTIyZDU5NTBlMGQ1OTNhNWZhZDEyNmI4OWNiYzRjNzNkZjBiLi42NGRjYjA4ZmZm
MmYyZTVkNjI1NDZmOTZmOWQ1OGM2MzA4MjE5Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkhlYXAuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAKICNpZiBV
U0UoUFRIUkVBRFMpCiAjaW5jbHVkZSA8cHRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5jcHAKaW5kZXggNmZhNmIyYTQ3MTQ0OGZiYWFiMmIx
ZDgzYWM0ZDk5NmE3NDYyMDhjNy4uMzE3MmNjOTM1NWExZGJkYmI5NGQ3Mzg5NzZiODNiZGVkMjY4
MzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJD
ZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwu
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U051bWJlckNlbGwuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAKIC8vIEtlZXAgb3VyIGV4
cG9ydGVkIHN5bWJvbHMgbGlzdHMgaGFwcHkuCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcAppbmRleCAwMjZjZjMxZTQxYzE4MzA1MTdm
ZDAwYTVmZjY2MGNmZjlhM2UwZTFjLi5jMGM1ZjExNjBiM2M1ZDVmNmQ4ZTgxYzUwYmFiNThlZDlh
NWUyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJp
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNab21iaWUu
aCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAKICNp
ZiBFTkFCTEUoSlNDX1pPTUJJRVMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcmtlZEJsb2NrLmNwcAppbmRleCBiMzhhYzRhMGY1ZjlmNDBjMjA3MzNkYzI1YWJhNjZjNDY4
ZGE3ZTQxLi40OGRkYTRjNzg3MGY1NjE1MThiOWZmMjMzNjBkYjQzNTJmZDYzYTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2suY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAppbmRleCA3ZjVmNzFkY2IzZjQz
N2Y1NTBkZjU2ZGU3YTQ5MjM3NjJmMTYyYjlhLi4xNWFiNTE0ZmY0Yjg0MTRhZDBiMzY0ZjAzMDBh
ZjJmNDc5NWE5NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2Vk
U3BhY2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCisjaW5jbHVkZSAiU2NvcGVD
aGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCmluZGV4IGFmYjQxYmVjYzAzM2JiYTZm
MzYwMjUwZjVkNWJmNjNmNzFjODQ4MTUuLjM1MWVjYzNlZjljNDNjMmY5YjFkMjQ0ZDYzMGY2NGY4
NmM5NDE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5kZXggODU3
OWEyOTg0YmMwNjgwNzRhZjAxN2MyY2NjMTdmMmZmY2UxMjg5Zi4uNDYxNWY5YTA2MWJkNjFiOTI0
NjQ1MWYzODE2Nzg4OTMwOWJjNmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5jcHAKQEAgLTMxLDE2ICszMSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
I2lmbmRlZiBOREVCVUcKIAotdm9pZCBTY29wZUNoYWluTm9kZTo6cHJpbnQoKSBjb25zdAordm9p
ZCBTY29wZUNoYWluTm9kZTo6cHJpbnQoKQogewogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBzY29w
ZUVuZCA9IGVuZCgpOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIHNjb3BlSXRlciA9IGJl
Z2luKCk7IHNjb3BlSXRlciAhPSBzY29wZUVuZDsgKytzY29wZUl0ZXIpIHsKLSAgICAgICAgRGVw
cmVjYXRlZFB0cjxKU09iamVjdD4gbyA9ICpzY29wZUl0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBv
ID0gc2NvcGVJdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAgICAgICAgIG8tPmdldFByb3BlcnR5
TmFtZXMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZXMpOwogICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9IHByb3BlcnR5TmFt
ZXMuZW5kKCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0t
LS0tXG4iLCBvLmdldCgpKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUg
JXBdIC0tLS0tXG4iLCBvKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgcHJvcEl0ZXIgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IHByb3BJdGVyICE9IHBy
b3BFbmQ7IHByb3BJdGVyKyspIHsKICAgICAgICAgICAgIElkZW50aWZpZXIgbmFtZSA9ICpwcm9w
SXRlcjsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMsICIsIG5hbWUudXN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpw
cmludCgpIGNvbnN0CiAKICNlbmRpZgogCi1pbnQgU2NvcGVDaGFpbjo6bG9jYWxEZXB0aCgpIGNv
bnN0CitpbnQgU2NvcGVDaGFpbk5vZGU6OmxvY2FsRGVwdGgoKQogewogICAgIGludCBzY29wZURl
cHRoID0gMDsKICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHRoaXMtPmJlZ2luKCk7CkBA
IC02NSw0ICs2NSwxMyBAQCBpbnQgU2NvcGVDaGFpbjo6bG9jYWxEZXB0aCgpIGNvbnN0CiAgICAg
cmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAgICBpZiAobmV4dCkKKyAgICAgICAgbWFya1N0
YWNrLmFwcGVuZCgmbmV4dCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmb2JqZWN0KTsKKyAgICBt
YXJrU3RhY2suYXBwZW5kKCZnbG9iYWxPYmplY3QpOworICAgIG1hcmtTdGFjay5hcHBlbmQoJmds
b2JhbFRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCAxMWYzNjkyODU5MDFmODhhZWJhNDkwNmI5YWY0
M2FhYmUxOGM1OTM0Li5mYmVjZDExN2UwZTdjYWNkMzc3OWM2OGQzNzU3NTU4ODFlM2E4MTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC0yMSw3ICsy
MSw3IEBACiAjaWZuZGVmIFNjb3BlQ2hhaW5faAogI2RlZmluZSBTY29wZUNoYWluX2gKIAotI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzIsMTA5ICszMiw2NyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgU2NvcGVD
aGFpbkl0ZXJhdG9yOwogICAgIAotICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIHsKLSAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGUgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKFNjb3BlQ2hh
aW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQotICAg
ICAgICAgICAgOiBuZXh0KG5leHQpCi0gICAgICAgICAgICAsIG9iamVjdChvYmplY3QpCisgICAg
ICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zY29wZUNoYWluTm9kZVN0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICwgZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQotICAgICAgICAgICAgLCBn
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgLCBnbG9iYWxUaGlzKGdsb2Jh
bFRoaXMpCi0gICAgICAgICAgICAsIHJlZkNvdW50KDEpCisgICAgICAgICAgICAsIG5leHQoKmds
b2JhbERhdGEsIHRoaXMsIG5leHQpCisgICAgICAgICAgICAsIG9iamVjdCgqZ2xvYmFsRGF0YSwg
dGhpcywgb2JqZWN0KQorICAgICAgICAgICAgLCBnbG9iYWxPYmplY3QoKmdsb2JhbERhdGEsIHRo
aXMsIGdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICwgZ2xvYmFsVGhpcygqZ2xvYmFsRGF0YSwg
dGhpcywgZ2xvYmFsVGhpcykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdsb2JhbERh
dGEpOwogICAgICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIH0KLSNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgIC8vIER1ZSB0byB0aGUgbnVtYmVyIG9mIHN1YnRsZSBhbmQgdGlt
aW5nIGRlcGVuZGVudCBidWdzIHRoYXQgaGF2ZSBvY2N1cnJlZCBkdWUKLSAgICAgICAgLy8gdG8g
ZGVsZXRlZCBidXQgc3RpbGwgInZhbGlkIiBTY29wZUNoYWluTm9kZXMgd2Ugbm93IGRlbGliZXJh
dGVseSBjbG9iYmVyIHRoZQotICAgICAgICAvLyBjb250ZW50cyBpbiBkZWJ1ZyBidWlsZHMuCi0g
ICAgICAgIH5TY29wZUNoYWluTm9kZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5leHQgPSAw
OwotICAgICAgICAgICAgZ2xvYmFsRGF0YSA9IDA7Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3Qg
PSAwOwotICAgICAgICAgICAgZ2xvYmFsVGhpcyA9IDA7Ci0gICAgICAgIH0KLSNlbmRpZgogCi0g
ICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBuZXh0OwotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2Jq
ZWN0PiBvYmplY3Q7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YTsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdDsKLSAgICAgICAgSlNPYmplY3QqIGdsb2JhbFRo
aXM7Ci0gICAgICAgIGludCByZWZDb3VudDsKLQotICAgICAgICB2b2lkIGRlcmVmKCkgeyBBU1NF
UlQocmVmQ291bnQpOyBpZiAoLS1yZWZDb3VudCA9PSAwKSB7IHJlbGVhc2UoKTt9IH0KLSAgICAg
ICAgdm9pZCByZWYoKSB7IEFTU0VSVChyZWZDb3VudCk7ICsrcmVmQ291bnQ7IH0KLSAgICAgICAg
dm9pZCByZWxlYXNlKCk7Ci0KLSAgICAgICAgLy8gQmVmb3JlIGNhbGxpbmcgInB1c2giIG9uIGEg
YmFyZSBTY29wZUNoYWluTm9kZSwgYSBjbGllbnQgc2hvdWxkCi0gICAgICAgIC8vIGxvZ2ljYWxs
eSAiY29weSIgdGhlIG5vZGUuIExhdGVyLCB0aGUgY2xpZW50IGNhbiAiZGVyZWYiIHRoZSBoZWFk
Ci0gICAgICAgIC8vIG9mIGl0cyBjaGFpbiBvZiBTY29wZUNoYWluTm9kZXMgdG8gcmVjbGFpbSBh
bGwgdGhlIG5vZGVzIGl0IGFkZGVkCi0gICAgICAgIC8vIGFmdGVyIHRoZSBsb2dpY2FsIGNvcHks
IGxlYXZpbmcgbm9kZXMgYWRkZWQgYmVmb3JlIHRoZSBsb2dpY2FsIGNvcHkKLSAgICAgICAgLy8g
KG5vZGVzIHNoYXJlZCB3aXRoIG90aGVyIGNsaWVudHMpIHVudG91Y2hlZC4KLSAgICAgICAgU2Nv
cGVDaGFpbk5vZGUqIGNvcHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZWYoKTsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9CisgICAgICAgIFdyaXRlQmFycmllcjxTY29w
ZUNoYWluTm9kZT4gbmV4dDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBvYmplY3Q7
CisgICAgICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0OworICAg
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGdsb2JhbFRoaXM7CiAKICAgICAgICAgU2NvcGVD
aGFpbk5vZGUqIHB1c2goSlNPYmplY3QqKTsKICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIHBvcCgp
OwogCi0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgICAgICBT
Y29wZUNoYWluSXRlcmF0b3IgZW5kKCkgY29uc3Q7CisgICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRv
ciBiZWdpbigpOworICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kKCk7CisKKyAgICAgICAg
aW50IGxvY2FsRGVwdGgoKTsKIAogI2lmbmRlZiBOREVCVUcgICAgICAgIAotICAgICAgICB2b2lk
IHByaW50KCkgY29uc3Q7CisgICAgICAgIHZvaWQgcHJpbnQoKTsKICNlbmRpZgorICAgICAgICAK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENv
bXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgcHJpdmF0
ZToKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzTWFya0NoaWxkcmVuOwogICAgIH07CiAKICAgICBpbmxpbmUgU2NvcGVDaGFpbk5vZGUqIFNj
b3BlQ2hhaW5Ob2RlOjpwdXNoKEpTT2JqZWN0KiBvKQogICAgIHsKICAgICAgICAgQVNTRVJUKG8p
OwotICAgICAgICByZXR1cm4gbmV3IFNjb3BlQ2hhaW5Ob2RlKHRoaXMsIG8sIGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERh
dGEpIFNjb3BlQ2hhaW5Ob2RlKHRoaXMsIG8sIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdC5nZXQo
KSwgZ2xvYmFsVGhpcy5nZXQoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIFNjb3BlQ2hhaW5Ob2Rl
KiBTY29wZUNoYWluTm9kZTo6cG9wKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKLSAg
ICAgICAgU2NvcGVDaGFpbk5vZGUqIHJlc3VsdCA9IG5leHQ7Ci0KLSAgICAgICAgaWYgKC0tcmVm
Q291bnQgIT0gMCkKLSAgICAgICAgICAgICsrcmVzdWx0LT5yZWZDb3VudDsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZGVsZXRlIHRoaXM7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBTY29wZUNoYWluTm9kZTo6cmVsZWFzZSgpCi0gICAgewot
ICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IGRlcmVmKCksCi0gICAg
ICAgIC8vIERlcmVmIGVuc3VyZXMgdGhlc2UgY29uZGl0aW9ucyBhcmUgdHJ1ZS4KLSAgICAgICAg
QVNTRVJUKHJlZkNvdW50ID09IDApOwotICAgICAgICBTY29wZUNoYWluTm9kZSogbiA9IHRoaXM7
Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBuZXh0ID0gbi0+bmV4
dDsKLSAgICAgICAgICAgIGRlbGV0ZSBuOwotICAgICAgICAgICAgbiA9IG5leHQ7Ci0gICAgICAg
IH0gd2hpbGUgKG4gJiYgLS1uLT5yZWZDb3VudCA9PSAwKTsKKyAgICAgICAgcmV0dXJuIG5leHQu
Z2V0KCk7CiAgICAgfQogCiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvcihjb25zdCBTY29wZUNoYWluTm9kZSogbm9k
ZSkKKyAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yKFNjb3BlQ2hhaW5Ob2RlKiBub2RlKQogICAg
ICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
RGVwcmVjYXRlZFB0cjxKU09iamVjdD4gY29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBtX25vZGUtPm9iamVjdDsgfQotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBjb25z
dCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQorICAgICAg
ICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGNvbnN0ICYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlLT5vYmplY3Q7IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjb25z
dCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQogICAgIAot
ICAgICAgICBTY29wZUNoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IG1fbm9kZSA9IG1fbm9k
ZS0+bmV4dDsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciYgb3Bl
cmF0b3IrKygpIHsgbV9ub2RlID0gbV9ub2RlLT5uZXh0LmdldCgpOyByZXR1cm4gKnRoaXM7IH0K
IAogICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAogCkBAIC0xNDIs
MTAwICsxMDAsMzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTY29wZUNoYWluSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgIT0g
b3RoZXIubV9ub2RlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBjb25zdCBTY29wZUNoYWlu
Tm9kZSogbV9ub2RlOworICAgICAgICBEZXByZWNhdGVkUHRyPFNjb3BlQ2hhaW5Ob2RlPiBtX25v
ZGU7CiAgICAgfTsKIAotICAgIGlubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2NvcGVDaGFpbk5v
ZGU6OmJlZ2luKCkgY29uc3QKKyAgICBpbmxpbmUgU2NvcGVDaGFpbkl0ZXJhdG9yIFNjb3BlQ2hh
aW5Ob2RlOjpiZWdpbigpCiAgICAgewogICAgICAgICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9y
KHRoaXMpOyAKICAgICB9CiAKLSAgICBpbmxpbmUgU2NvcGVDaGFpbkl0ZXJhdG9yIFNjb3BlQ2hh
aW5Ob2RlOjplbmQoKSBjb25zdAorICAgIGlubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2NvcGVD
aGFpbk5vZGU6OmVuZCgpCiAgICAgeyAKICAgICAgICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVyYXRv
cigwKTsgCiAgICAgfQogCi0gICAgY2xhc3MgTm9TY29wZUNoYWluIHt9OwotCi0gICAgY2xhc3Mg
U2NvcGVDaGFpbiB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgcHVibGljOgotICAg
ICAgICBTY29wZUNoYWluKE5vU2NvcGVDaGFpbikKLSAgICAgICAgICAgIDogbV9ub2RlKDApCi0g
ICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFNjb3BlQ2hhaW4oSlNPYmplY3QqIG8sIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGdsb2JhbFRoaXMpCi0gICAgICAgICAgICA6IG1fbm9kZShuZXcgU2NvcGVDaGFpbk5v
ZGUoMCwgbywgZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxUaGlzKSkKLSAgICAgICAg
ewotICAgICAgICB9Ci0KLSAgICAgICAgU2NvcGVDaGFpbihjb25zdCBTY29wZUNoYWluJiBjKQot
ICAgICAgICAgICAgOiBtX25vZGUoYy5tX25vZGUtPmNvcHkoKSkKLSAgICAgICAgewotICAgICAg
ICB9Ci0KLSAgICAgICAgU2NvcGVDaGFpbiYgb3BlcmF0b3I9KGNvbnN0IFNjb3BlQ2hhaW4mIGMp
OwotCi0gICAgICAgIGV4cGxpY2l0IFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIG5vZGUpCi0g
ICAgICAgICAgICA6IG1fbm9kZShub2RlLT5jb3B5KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIH5TY29wZUNoYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fbm9k
ZSkKLSAgICAgICAgICAgICAgICBtX25vZGUtPmRlcmVmKCk7Ci0jaWZuZGVmIE5ERUJVRwotICAg
ICAgICAgICAgbV9ub2RlID0gMDsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBz
d2FwKFNjb3BlQ2hhaW4mKTsKLQotICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZTsgfQotCi0gICAgICAgIEpTT2JqZWN0KiB0b3AoKSBjb25zdCB7IHJl
dHVybiBtX25vZGUtPm9iamVjdC5nZXQoKTsgfQotCi0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+YmVnaW4oKTsgfQotICAgICAgICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5lbmQoKTsgfQotCi0g
ICAgICAgIHZvaWQgcHVzaChKU09iamVjdCogbykgeyBtX25vZGUgPSBtX25vZGUtPnB1c2gobyk7
IH0KLQotICAgICAgICB2b2lkIHBvcCgpIHsgbV9ub2RlID0gbV9ub2RlLT5wb3AoKTsgfQotICAg
ICAgICB2b2lkIGNsZWFyKCkgeyBtX25vZGUtPmRlcmVmKCk7IG1fbm9kZSA9IDA7IH0KLSAgICAg
ICAgCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVy
biBtX25vZGUtPmdsb2JhbE9iamVjdDsgfQotCi0gICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShN
YXJrU3RhY2smKSBjb25zdDsKLQotICAgICAgICAvLyBDYXV0aW9uOiB0aGlzIHNob3VsZCBvbmx5
IGJlIHVzZWQgaWYgdGhlIGNvZGVibG9jayB0aGlzIGlzIGJlaW5nIHVzZWQKLSAgICAgICAgLy8g
d2l0aCBuZWVkcyBhIGZ1bGwgc2NvcGUgY2hhaW4sIG90aGVyd2lzZSB0aGlzIHJldHVybnMgdGhl
IGRlcHRoIG9mCi0gICAgICAgIC8vIHRoZSBwcmVjZWVkaW5nIGNhbGwgZnJhbWUKLSAgICAgICAg
Ly8KLSAgICAgICAgLy8gUmV0dXJucyB0aGUgZGVwdGggb2YgdGhlIGN1cnJlbnQgY2FsbCBmcmFt
ZSdzIHNjb3BlIGNoYWluCi0gICAgICAgIGludCBsb2NhbERlcHRoKCkgY29uc3Q7Ci0KLSNpZm5k
ZWYgTkRFQlVHICAgICAgICAKLSAgICAgICAgdm9pZCBwcmludCgpIGNvbnN0IHsgbV9ub2RlLT5w
cmludCgpOyB9Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2Rl
KiBtX25vZGU7Ci0gICAgfTsKLQotICAgIGlubGluZSB2b2lkIFNjb3BlQ2hhaW46OnN3YXAoU2Nv
cGVDaGFpbiYgbykKKyAgICBBTFdBWVNfSU5MSU5FIEpTR2xvYmFsRGF0YSYgRXhlY1N0YXRlOjpn
bG9iYWxEYXRhKCkgY29uc3QKICAgICB7Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBt
X25vZGU7Ci0gICAgICAgIG1fbm9kZSA9IG8ubV9ub2RlOwotICAgICAgICBvLm1fbm9kZSA9IHRt
cDsKKyAgICAgICAgQVNTRVJUKHNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSk7CisgICAgICAgIHJl
dHVybiAqc2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhOwogICAgIH0KIAotICAgIGlubGluZSBTY29w
ZUNoYWluJiBTY29wZUNoYWluOjpvcGVyYXRvcj0oY29uc3QgU2NvcGVDaGFpbiYgYykKKyAgICBB
TFdBWVNfSU5MSU5FIEpTR2xvYmFsT2JqZWN0KiBFeGVjU3RhdGU6OmxleGljYWxHbG9iYWxPYmpl
Y3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2Jq
ZWN0LmdldCgpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBFeGVj
U3RhdGU6Omdsb2JhbFRoaXNWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBTY29wZUNoYWlu
IHRtcChjKTsKLSAgICAgICAgc3dhcCh0bXApOwotICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
ICAgIHJldHVybiBzY29wZUNoYWluKCktPmdsb2JhbFRoaXMuZ2V0KCk7CiAgICAgfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW5NYXJrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluTWFyay5oCmluZGV4IGZhYTQ4MjRjZGZjY2Y3ZjIyNGRhYjYwYzMwYjQxMzRmYzNkNmY4Zjcu
LjM1NzAxZjExZDA1MzM5Y2EwNGEyYzE5NDMyNzdjNzNlZWY0OGRkZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaApAQCAtMjUsMTIgKzI1LDYg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBpbmxpbmUgdm9pZCBTY29wZUNoYWluOjptYXJr
QWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKSBjb25zdAotICAgIHsKLSAgICAgICAgZm9y
IChTY29wZUNoYWluTm9kZSogbiA9IG1fbm9kZTsgbjsgbiA9IG4tPm5leHQpCi0gICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZuLT5vYmplY3QpOwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBTY29wZUNoYWluTWFya19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RGF0ZU1hdGguY3BwCmluZGV4IDg2NDM0ZTExZGFkNzM1ZGFmODk0YzE4OWVkMzRiYmNiNDcyNWVk
YWMuLmU0ZjVkZDgwNmM5OGJlYmVmYTlmMWQzYWVkZjllZWZjZGE5YzFmYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAi
QVNDSUlDVHlwZS5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiTWF0aEV4
dHJhcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdGRMaWJFeHRyYXMu
aCIKICNpbmNsdWRlICJTdHJpbmdFeHRyYXMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhMjBkOTI4YmY4
Yzk0OGM5YmYxYTE0NGIxYzg4ZTliYTYwMzhkMTIuLjEyMzllNDJmOWQzMmEzODRkM2ZiOGE3NDZk
OWU0ZWY1M2Y1MzZiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMi0yNSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2NvcGVDaGFpbk5vZGUgR0MgYWxsb2NhdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTI4Mwor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIGRlYWwgd2l0aCB0aGUgYWJzZW5jZSBvZiB0aGUg
U2NvcGVDaGFpbgorICAgICAgICBjbGFzcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRWxlbWVudDo6cHVz
aEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRD
YWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpzY29wZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdENhbGxGcmFt
ZTo6c2NvcGVUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVK
U0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpzY29wZUNoYWluKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgICogYnJpZGdlL2MvY19y
dW50aW1lLmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHA6CisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHA6CisKIDIwMTEtMDItMjUgIE5lZCBIb2xicm9v
ayAgPG5ob2xicm9va0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggNDE5NDY1NzIxZjAxNGIwMmRjMDdjMzU5NzQ2OTY3NGQ4NmE2NzAxOC4u
MGQyYmY5NDllM2YxZGJjMTRjZGI3YzBkZTI2ZGJmOTJkMzUyMWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKQEAgLTMzLDE5
ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXZvaWQgSlNIVE1MRWxlbWVudDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDaGFpbiYgc2NvcGUpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNIVE1MRWxlbWVu
dDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpOwogCiAg
ICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBmaXJzdCwgZmFsbCBiYWNrIHRvIHNlYXJjaGlu
ZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFuZCBmb3JtLgotICAgIHNjb3BlLnB1c2goYXNP
YmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgZWxlbWVudC0+b3duZXJEb2N1bWVudCgp
KSkpOworICAgIHNjb3BlID0gc2NvcGUtPnB1c2goYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxP
YmplY3QoKSwgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpKSkpOwogCiAgICAgLy8gVGhlIGZvcm0g
aXMgbmV4dCwgc2VhcmNoZWQgYmVmb3JlIHRoZSBkb2N1bWVudCwgYnV0IGFmdGVyIHRoZSBlbGVt
ZW50IGl0c2VsZi4KICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gZWxlbWVudC0+Zm9y
bSgpKQotICAgICAgICBzY29wZS5wdXNoKGFzT2JqZWN0KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
KCksIGZvcm0pKSk7CisgICAgICAgIHNjb3BlID0gc2NvcGUtPnB1c2goYXNPYmplY3QodG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QoKSwgZm9ybSkpKTsKIAogICAgIC8vIFRoZSBlbGVtZW50IGlzIG9u
IHRvcCwgc2VhcmNoZWQgZmlyc3QuCi0gICAgc2NvcGUucHVzaChhc09iamVjdCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBlbGVtZW50KSkpOworICAgIHJldHVybiBzY29wZS0+cHVzaChhc09i
amVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBlbGVtZW50KSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCA3YzAwYmQ0M2FjM2YxNDdk
NWQwODI4ZGQyMDkyNTk1ODVlNTBmNTI4Li5lNDkzNTA4MTg1M2YyNTE1MGVjYzhkZmM0ZDViYjBh
M2FhMzA5MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFT
Y3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgSlNWYWx1
ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4oRXhlY1N0YXRlKiBleGVjKSBjb25z
dAogICAgIGlmICghaW1wbCgpLT5zY29wZUNoYWluKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKIAotICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gaW1wbCgpLT5zY29w
ZUNoYWluKCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBpbXBsKCktPnNjb3Bl
Q2hhaW4oKTsKICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2lu
KCk7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOwogCkBA
IC05NSwxMiArOTUsMTIgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlw
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlu
dCBpbmRleCA9IGV4ZWMtPmFyZ3VtZW50KDApLmFzSW50MzIoKTsKIAotICAgIGNvbnN0IFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluID0gaW1wbCgpLT5zY29wZUNoYWluKCk7CisgICAgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBpbXBsKCktPnNjb3BlQ2hhaW4oKTsKICAgICBTY29wZUNo
YWluSXRlcmF0b3IgZW5kID0gc2NvcGVDaGFpbi0+ZW5kKCk7CiAKICAgICBib29sIGZvdW5kTG9j
YWxTY29wZSA9IGZhbHNlOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBzY29w
ZUNoYWluLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIEpTQzo6RGVw
cmVjYXRlZFB0cjxKU09iamVjdD4gc2NvcGUgPSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIHNj
b3BlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIGlmIChzY29wZS0+aXNBY3RpdmF0aW9uT2JqZWN0
KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmRMb2NhbFNjb3BlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRmlyc3QgYWN0aXZhdGlvbiBvYmplY3QgaXMgbG9jYWwgc2NvcGUsIGVhY2ggc3VjY2Vz
c2l2ZSBhY3RpdmF0aW9uIG9iamVjdCBpcyBjbG9zdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCBlMTdhM2Q0Y2JiZWMx
MzllMmIyM2I2OTM4NjE3NTBiODZkNmM5NTVkLi45OGRiOTdhNmY0NTUwZTAyZGRhYmZlM2ZmOGQ1
ZGE5ZTY5Mzk4ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcApAQCAtMTIwLDkgKzEyMCw3IEBAIEpTT2JqZWN0KiBKU0xhenlF
dmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBleGVjCiAKICAgICAgICAgLy8gQWRkIHRoZSBldmVudCdzIGhvbWUgZWxlbWVudCB0byB0aGUg
c2NvcGUKICAgICAgICAgLy8gKGFuZCB0aGUgZG9jdW1lbnQsIGFuZCB0aGUgZm9ybSAtIHNlZSBK
U0hUTUxFbGVtZW50OjpldmVudEhhbmRsZXJTY29wZSkKLSAgICAgICAgU2NvcGVDaGFpbiBzY29w
ZSA9IGxpc3RlbmVyQXNGdW5jdGlvbi0+c2NvcGUoKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNO
b2RlKj4od3JhcHBlcigpKS0+cHVzaEV2ZW50SGFuZGxlclNjb3BlKGV4ZWMsIHNjb3BlKTsKLSAg
ICAgICAgbGlzdGVuZXJBc0Z1bmN0aW9uLT5zZXRTY29wZShzY29wZSk7CisgICAgICAgIGxpc3Rl
bmVyQXNGdW5jdGlvbi0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdGF0aWNfY2FzdDxK
U05vZGUqPih3cmFwcGVyKCkpLT5wdXNoRXZlbnRIYW5kbGVyU2NvcGUoZXhlYywgbGlzdGVuZXJB
c0Z1bmN0aW9uLT5zY29wZSgpKSk7CiAgICAgfQogCiAgICAgLy8gU2luY2Ugd2Ugb25seSBwYXJz
ZSBvbmNlLCB0aGVyZSdzIG5vIG5lZWQgdG8ga2VlcCBkYXRhIHVzZWQgZm9yIHBhcnNpbmcgYXJv
dW5kIGFueW1vcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDM0OWRjMTRiNmFlMmZiNjNlNDQ5ZjZlMjc3NTU4MmNhY2Iy
Y2JiNzEuLmZiMDEwMDBmOWZkZmI5OWM2NjlkOWE3YjEyM2Y0YzQ3NTZlYTdmNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBm
dW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAg
IH07CiAKLSAgICBzdGF0aWMgSlNDOjpDb21wbGV0aW9uIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OlNjb3BlQ2hhaW4mIGNoYWluLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSkKKyAgICBzdGF0aWMgSlNDOjpDb21wbGV0aW9u
IGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBjaGFp
biwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUp
CiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMp
OwogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBjaGFpbiwgc291cmNlLCB0aGlz
VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5k
ZXggOGQwMDQ0N2MwYmEzNTM4Y2EyOGFlMDFlYTZmZGE3MzZlNGUwYTlkZC4uMTdmNTdmNDYxYWUw
MzEyODNjMWE2NTU3MDI5NGEzYTk2Y2I4OTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xMTIsOCArMTEyLDkgQEAgSlNWYWx1ZSBKU05vZGU6
OmFwcGVuZENoaWxkKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAK
LXZvaWQgSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
biYpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIGNvbnN0CiB7CisgICAgcmV0dXJuIG5v
ZGU7CiB9CiAKIHZvaWQgSlNOb2RlOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwCmluZGV4IGNlZDdkODVmYWFlOTViNzUyMGM3ZjNhMTlkMDc2MmRlMzk4MmNjYjkuLjViYWZl
ZGE0MzA0Y2M4YWRmOTNiYjBmNzRiY2QyZWQxMDE0ZmRiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIEphdmFTY3JpcHRDYWxsRnJhbWUqIEphdmFTY3JpcHRDYWxsRnJhbWU6OmNhbGxlcigpCiAg
ICAgcmV0dXJuIG1fY2FsbGVyLmdldCgpOwogfQogCi1jb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2Rl
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluKCkgY29uc3QKK0pTQzo6U2NvcGVDaGFp
bk5vZGUqIEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4oKSBjb25zdAogewogICAgIEFT
U0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IGI2OTM5NjgxZGY1ZTc4
YTRjMzk4ZjQ3ZmVmY2MyZjY5N2M0MTFmZmMuLmYzYTExNGI5MGJlYWEwYTMzNGFmNWMwMzM3ZjVh
ZGVkZTNhMzA5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGZ1
bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgIEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgdHlw
ZSgpIGNvbnN0OwotICAgIGNvbnN0IEpTQzo6U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBj
b25zdDsKKyAgICBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3Q7CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0OwogCiAgICAg
SlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyYzVlMTM5NjYwNWEz
OWQ2Y2UxM2Q5M2E3MjBkNWE5YWI2YzZiMWM2Li5jYjUxYzhhMjdkODEyZWUzNzM0ZDBkYjBkYzA0
MTM2MzY1YjFhNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzU4LDcgKzc1OCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgIH0KIAogICAgICMgQ3VzdG9tIHB1c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgot
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRs
ZXJTY29wZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVDaGFpbiYpIGNvbnN0O1xuXG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVy
U2NvcGUifTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgSlNDOjpTY29w
ZUNoYWluTm9kZSogcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpT
Y29wZUNoYWluTm9kZSopIGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNh
bGwgZnVuY3Rpb25zCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIEpTQzo6
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
Y2xhc3MuY3BwCmluZGV4IGY0YWU1Y2FkZjMyZTFiNzMyNjY5ODc5YzVmZGM1OTM3NzNiOTAyNDku
LjUyZWNjZmJmNmNiNTA4MzEwNWM4NTdmYWVhYmRkNWNjZjY4OTkzMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfY2xhc3MuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY19pbnN0YW5j
ZS5oIgogI2luY2x1ZGUgImNfcnVudGltZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NvcGVDaGFpbi5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAK
aW5kZXggZTAzOGNkNGQ4MTI1MjY0M2YzNTNjN2VlNmFlZDg3MmY5ZDE1NWIzZi4uZTE1MzU1MzVm
YmJlMjA1OGI2MWIxMTdjZTRkNDMxN2I1MzY2OWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X3J1bnRpbWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgog
I2luY2x1ZGUgImNfdXRpbGl0eS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2NvcGVDaGFpbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9KTklCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlk
Z2UuY3BwCmluZGV4IGM1MTJlZTcwNjhlOGIwYmNiN2ZiMGM5ZjdkZDhlY2EwMmQ4YmVlYmQuLjcw
NzRmMDhlNDMxZTJmNjQ1Nzc0ZWY2ZmVjNmE3MTI1ZGU5YzQ1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShK
QVZBX0JSSURHRSkKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Njb3BlQ2hhaW4uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdO
b25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCmluZGV4
IDlhZWFmM2I1MTVlZjQzYzhhNThjODkyZDU3MTdjNWE5YmM0OTc3ZGMuLjJjMDFmZDU4MDFmMDY2
ZGQ2YmRmNmQxNTkyZjI0ZmExYzZmOGM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlld05vbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoSlNDKQogI2luY2x1
ZGUgIkJyaWRnZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Njb3BlQ2hhaW4uaD4KICNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgyNjc2MDk4
NDExMWY3NTI5OWRjMjcwNTYwNThkMzk4ZDViYWMzZjcuLjdjZmFhOTE5ODY3ZThlZDk2NWU3ODEz
OWJiMWRmMTIzYzE3NzQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wMi0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2NvcGVDaGFpbk5vZGUgR0Mg
YWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTI4MworCisgICAgICAgIE1vcmUgdXBkYXRlcyBmb3IgdGhlIGFic2VuY2Ugb2YgdGhlIFNj
b3BlQ2hhaW4gY2xhc3MKKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIHNjb3BlQ2hhaW5dKToKKwogMjAx
MS0wMi0yNSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84OTAyNTQ2PiBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KaW5kZXggOTZhMWE0MjcxYzNkNTNmZWIy
M2NiOTVjZTgzOWNjN2NhNGVhYTQxYi4uMjcwMjY2YjcxNWJhYjg1NGJjMDliOTViMTZlMmM2MzU0
OGRhNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHRE
ZWJ1Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMTc2LDcgKzE3Niw3IEBAIE5TU3RyaW5nICogY29uc3QgV2Vi
U2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwog
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIGNvbnN0IFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5z
Y29wZUNoYWluKCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBfcHJpdmF0ZS0+
ZGVidWdnZXJDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKICAgICBpZiAoIXNjb3BlQ2hhaW4tPm5l
eHQpICAvLyBnbG9iYWwgZnJhbWUKICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdDpfcHJpdmF0ZS0+Z2xvYmFsT2JqZWN0XTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84092</attachid>
            <date>2011-02-28 12:09:10 -0800</date>
            <delta_ts>2011-02-28 12:44:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55283-20110228120909.patch</filename>
            <type>text/plain</type>
            <size>99332</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg5
MGEwZWRmYjQ5YjFiNDAyOTE5M2ZhNmQ2MmU4YWE1NmM4N2UyNDcuLjE0ZTEyOGY3ZGIxMDFiYWJm
MmM4YjJiZmVjMTQ0YmJkYWM3ZDhhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyMiBAQAorMjAxMS0wMi0yOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2Nv
cGVDaGFpbk5vZGUgR0MgYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NTI4MworCisgICAgICAgIFNpbXBsaWZ5IGxpZmV0aW1lIGFuZCBv
dGhlciBpc3N1ZXMgd2l0aCB0aGUgc2NvcGVjaGFpbgorICAgICAgICBieSBtYWtpbmcgaXQgZ2Mg
YWxsb2NhdGVkLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkKKyAgICAgICAgZnVuY3Rpb24g
ZXhpdCBhbmQgdW53aW5kaW5nLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGUKKyAgICAgICAgY3VycmVu
dCBpdGVyYXRpdmUgcmVmY291bnRpbmcgZ28gYXdheS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rp
b25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RG
dW5jdGlvbkFwcGx5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OlJlY29t
cGlsZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
Lmg6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpzY29wZUNoYWluKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWNoZWRDYWxsLmg6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6
OkNhY2hlZENhbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZGVwdGgpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklU
Q2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6
ZUNhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmV0
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9lbmQpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklO
RV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0FyZ0xpc3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUlu
dGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHA6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDaHVu
ay5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDaHVuay5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpK
U0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bWFya0NoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpn
ZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6c2NvcGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpz
ZXRTY29wZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpTR2xv
YmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxTY29w
ZUNoYWluKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2Nr
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTTnVtYmVyQ2VsbC5jcHA6CisgICAgICAgICogcnVu
dGltZS9KU1pvbWJpZS5jcHA6CisgICAgICAgICogcnVudGltZS9NYXJrZWRCbG9jay5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnByaW50KToKKyAgICAgICAgKEpTQzo6U2NvcGVD
aGFpbk5vZGU6OmxvY2FsRGVwdGgpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVDaGFpbk5vZGU6OlNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2Rl
OjpwdXNoKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnBvcCk6CisgICAgICAgIChK
U0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6U2NvcGVDaGFpbkl0ZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6U2NvcGVDaGFpbkl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpTY29wZUNo
YWluSXRlcmF0b3I6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluSXRlcmF0
b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6YmVnaW4pOgor
ICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpnbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpsZXhpY2FsR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnbG9iYWxUaGlzVmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
Y3BwOgorCiAyMDExLTAyLTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAppbmRleCAwNGYwMGVjN2U5ZThjNzUyYThmYjYzNjk4NzBkYTg3OGFlNzll
NzU2Li5mMGU2YjhiODE0MmJhY2I0OTFjN2M0NjFhZTdiNDczNGEyMDMxZDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMwNSw3ICszMDUsNyBAQCBfX1pO
M0pTQzhKU09iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhQcm9maWxlcjEzc3RvcFByb2ZpbGluZ0VQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXIxNHN0YXJ0UHJv
ZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzhQcm9maWxlcjhw
cm9maWxlckV2Ci1fX1pOM0pTQzhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTBTY29wZUNo
YWluRVJLTlNfMTBTb3VyY2VDb2RlRU5TXzdKU1ZhbHVlRQorX19aTjNKU0M4ZXZhbHVhdGVFUE5T
XzlFeGVjU3RhdGVFUE5TXzE0U2NvcGVDaGFpbk5vZGVFUktOU18xMFNvdXJjZUNvZGVFTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzlDb2RlQmxvY2tEMUV2CiBfX1pOM0pTQzlDb2RlQmxvY2tEMkV2CiBf
X1pOM0pTQzlNYXJrU3RhY2sxMHNfcGFnZVNpemVFCkBAIC01ODcsNiArNTg3LDcgQEAgX19aTksz
V1RGNlN0cmluZzlzdWJzdHJpbmdFamoKIF9fWk5LM1dURjhDb2xsYXRvcjdjb2xsYXRlRVBLdG1T
Ml9tCiBfX1pUVk4zSlNDMTJTdHJpbmdPYmplY3RFCiBfX1pUVk4zSlNDMTRKU0dsb2JhbE9iamVj
dEUKK19fWlRWTjNKU0MxNFNjb3BlQ2hhaW5Ob2RlRQogX19aVFZOM0pTQzE1SlNXcmFwcGVyT2Jq
ZWN0RQogX19aVFZOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkUKIF9fWlRWTjNKU0MxNkpTVmFyaWFi
bGVPYmplY3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCmluZGV4IDBiYjQxOWUxMmNlZWI2YmFhMDk0OTIzODM4NzYwNTVlNmQ3YjU5YWYu
LjM0ZWFhYWEwZWIyNDI2ZDMyYWViMDkzMTIyNjVhZmY2ZmU5NmM0NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xNTAsNyAr
MTUwLDYgQEAgRVhQT1JUUwogICAgID9lcXVhbEBJZGVudGlmaWVyQEpTQ0BAU0FfTlBCVlN0cmlu
Z0ltcGxAV1RGQEBQQkRAWgogICAgID9lcXVhbFVURjE2V2l0aFVURjhAVW5pY29kZUBXVEZAQFlB
X05QQl9XMFBCRDFAWgogICAgID9ldmFsdWF0ZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9B
VkpTVmFsdWVAMkBBQlZVU3RyaW5nQDJAQUFWMzJAQFoKLSAgICA/ZXZhbHVhdGVASlNDQEBZQT9B
VkNvbXBsZXRpb25AMUBQQVZFeGVjU3RhdGVAMUBBQVZTY29wZUNoYWluQDFAQUJWU291cmNlQ29k
ZUAxQFZKU1ZhbHVlQDFAQFoKICAgICA/ZXhjbHVkZUBQcm9maWxlQEpTQ0BAUUFFWFBCVlByb2Zp
bGVOb2RlQDJAQFoKICAgICA/ZmFzdENhbGxvY0BXVEZAQFlBUEFYSUlAWgogICAgID9mYXN0RnJl
ZUBXVEZAQFlBWFBBWEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDVmYmE4YmI3MzA1OWI3ZDc5YTI1OWNiMDhhNGZlMmMwYTI5OWJkYmEuLjJk
MjM1ZGZmMDg2N2I0YzA5ZmZlNDMwYjBiNmE1OWJhZjA1NzBjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNjk3LDcgKzE2OTcsNyBAQCB2
b2lkIENvZGVCbG9jazo6Y3JlYXRlQWN0aXZhdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICBBU1NFUlQoIWNhbGxGcmFtZS0+dW5jaGVja2VkUihhY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNW
YWx1ZSgpKTsKICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGNhbGxGcmFtZSkg
SlNBY3RpdmF0aW9uKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
b3duZXJFeGVjdXRhYmxlKCkpKTsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYWN0aXZhdGlv
blJlZ2lzdGVyKCkpID0gSlNWYWx1ZShhY3RpdmF0aW9uKTsKLSAgICBjYWxsRnJhbWUtPnNldFNj
b3BlQ2hhaW4oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmNvcHkoKS0+cHVzaChhY3RpdmF0aW9u
KSk7CisgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5wdXNoKGFjdGl2YXRpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRl
eCAwMThkODMyODliZjA4N2NmZjk5ZDA4YzIzZjY2ZmYzOTUyODQyODk1Li41ZWMyYTNmOThhNDU4
ZDE2YTJmMjlhNjk3ZmQ0YjZjZTQzZDA0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCisj
aW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDdiNTRiMTg5ZGM1NGJiZGIwOGJiYWJkMWQ2NWJmNmEz
NDQ1ZmEwNDUuLmMzNDRlZGM4NDYyNWU4NmQ3M2M3NmRmNGUxODIxZmM2MGRkODQzODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlv
bkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCiAgICAgaWYgKHNf
ZHVtcHNHZW5lcmF0ZWRDb2RlKQotICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOworICAgICAgICBtX2NvZGVCbG9jay0+
ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKICNlbmRpZgog
CiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwg
bV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKQEAgLTE1NSw3ICsxNTYsNyBAQCBKU09iamVjdCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQo
KTsKIAogICAgIGlmIChtX2V4cHJlc3Npb25Ub29EZWVwKQotICAgICAgICByZXR1cm4gY3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcihtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3Qu
Z2V0KCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xOTcsMTEgKzE5OCwxMSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZUxhc3RWYXIoKQogICAgICAgICBtX2xhc3RWYXIgPSAm
bV9jYWxsZWVSZWdpc3RlcnMubGFzdCgpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBjb25zdCBTY29wZUNoYWluJiBz
Y29wZUNoYWluLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaykKLSAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3Moc2NvcGVDaGFpbi5nbG9iYWxP
YmplY3QoKS0+ZGVidWdnZXIoKSkKLSAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhzY29w
ZUNoYWluLmdsb2JhbE9iamVjdCgpLT5zdXBwb3J0c1Byb2ZpbGluZygpKQotICAgICwgbV9zaG91
bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+c3VwcG9ydHNS
aWNoU291cmNlSW5mbygpKQotICAgICwgbV9zY29wZUNoYWluKCZzY29wZUNoYWluKQorQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgUHJv
Z3JhbUNvZGVCbG9jayogY29kZUJsb2NrKQorICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhz
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCkpCisgICAgLCBtX3Nob3VsZEVtaXRQ
cm9maWxlSG9va3Moc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5zdXBwb3J0c1Byb2ZpbGluZygp
KQorICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2Jq
ZWN0LT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKCkpCisgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3Bl
Q2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJv
bFRhYmxlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX2NvZGVCbG9j
ayhjb2RlQmxvY2spCkBAIC0yMTYsNyArMjE3LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgY29uc3QgU2NvcGVDaGFpbiYK
ICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RMYXp5RnVu
Y3Rpb24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQotICAgICwgbV9nbG9iYWxEYXRh
KCZzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpCisgICAgLCBtX2dsb2Jh
bERhdGEoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29kZUlEKG9wX2Vu
ZCkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2xhc3RPcGNvZGVQb3NpdGlvbigwKQpAQCAtMjM3
LDcgKzIzOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIGNvbnN0IFNjb3BlQ2hhaW4mCiAgICAgCiAgICAgbV9jb2RlQmxv
Y2stPm1fbnVtUGFyYW1ldGVycyA9IDE7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluLmdsb2JhbE9iamVj
dCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluLT5nbG9i
YWxPYmplY3QuZ2V0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKICAgICAKQEAgLTI4Miw3ICsyODMs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBjb25zdCBTY29wZUNoYWluJgogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlvblN0YWNrW2ldOwotICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRXaXRoQXR0cmlidXRlcyhleGVjLCBmdW5jdGlvbi0+aWRl
bnQoKSwgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5j
dGlvbiksIHNjb3BlQ2hhaW4ubm9kZSgpKSwgRG9udERlbGV0ZSk7CisgICAgICAgICAgICBnbG9i
YWxPYmplY3QtPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIGZ1bmN0aW9uLT5pZGVudCgpLCBuZXcg
KGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgbWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2Nv
cGVDaGFpbiksIERvbnREZWxldGUpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChnbG9iYWxP
YmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsICp2YXJTdGFja1tpXS5maXJzdCkpCkBAIC0yOTgsMTEg
KzI5OSwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5v
ZGUqIHByb2dyYW1Ob2RlLCBjb25zdCBTY29wZUNoYWluJgogICAgIGNvZGVCbG9jay0+bV9udW1D
YXB0dXJlZFZhcnMgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29u
c3QgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3Moc2NvcGVDaGFp
bi5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKLSAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVI
b29rcyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5zdXBwb3J0c1Byb2ZpbGluZygpKQotICAg
ICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+
c3VwcG9ydHNSaWNoU291cmNlSW5mbygpKQotICAgICwgbV9zY29wZUNoYWluKCZzY29wZUNoYWlu
KQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUq
IGZ1bmN0aW9uQm9keSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKKyAgICAsIG1fc2hv
dWxkRW1pdFByb2ZpbGVIb29rcyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPnN1cHBvcnRzUHJv
ZmlsaW5nKCkpCisgICAgLCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5n
bG9iYWxPYmplY3QtPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oKSkKKyAgICAsIG1fc2NvcGVDaGFp
bigqc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFi
bGUoc3ltYm9sVGFibGUpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbkJvZHkpCiAgICAgLCBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCkBAIC0zMTYsNyArMzE3LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29u
c3QgU2NvcGUKICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24oZmFsc2UpCiAgICAgLCBtX2Zp
cnN0TGF6eUZ1bmN0aW9uKDApCiAgICAgLCBtX2xhc3RMYXp5RnVuY3Rpb24oMCkKLSAgICAsIG1f
Z2xvYmFsRGF0YSgmc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKQorICAg
ICwgbV9nbG9iYWxEYXRhKHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpCiAgICAgLCBtX2xhc3RPcGNv
ZGVJRChvcF9lbmQpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9sYXN0T3Bjb2RlUG9zaXRpb24o
MCkKQEAgLTQ2NCwxMSArNDY1LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIGNvbnN0IFNjb3BlCiAgICAgfQog
fQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqIGV2YWxO
b2RlLCBjb25zdCBTY29wZUNoYWluJiBzY29wZUNoYWluLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUsIEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3Moc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKLSAgICAsIG1fc2hvdWxk
RW1pdFByb2ZpbGVIb29rcyhzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5zdXBwb3J0c1Byb2Zp
bGluZygpKQotICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi5nbG9i
YWxPYmplY3QoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbygpKQotICAgICwgbV9zY29wZUNoYWlu
KCZzY29wZUNoYWluKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YWxO
b2RlKiBldmFsTm9kZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSwgRXZhbENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIDogbV9zaG91bGRFbWl0
RGVidWdIb29rcyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCkpCisgICAgLCBt
X3Nob3VsZEVtaXRQcm9maWxlSG9va3Moc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5zdXBwb3J0
c1Byb2ZpbGluZygpKQorICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFp
bi0+Z2xvYmFsT2JqZWN0LT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKCkpCisgICAgLCBtX3Njb3Bl
Q2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJv
bFRhYmxlKHN5bWJvbFRhYmxlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCkBAIC00ODIsNyArNDgzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YWxOb2RlKiBldmFsTm9kZSwgY29uc3QgU2NvcGVDaGFp
biYgc2NvcGUKICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24odHJ1ZSkKICAgICAsIG1fZmly
c3RMYXp5RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQotICAgICwgbV9n
bG9iYWxEYXRhKCZzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpCisgICAg
LCBtX2dsb2JhbERhdGEoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29k
ZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2xhc3RPcGNvZGVQb3NpdGlvbigw
KQpAQCAtOTA3LDcgKzkwOCw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsCiAKICAgICBlbWl0
T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5k
ZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2Jq
ZWN0KCktPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlv
bnMoKS5zaXplKCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTE4LDcgKzkxOSw3IEBA
IFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rp
b25BcHBseShSZWdpc3RlcklEKiBjb25kCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+YXBwbHlGdW5j
dGlvbi5nZXQoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xv
YmFsT2JqZWN0LT5kKCktPmFwcGx5RnVuY3Rpb24uZ2V0KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAg
IHJldHVybiB0YXJnZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZGUxNmY4ZTM1ODc1MjRhZjRjYzQw
OTMzYzIyNThkOGZiZGEwNjExNy4uYjM4NTFjNzZmZTJkZGZlNzlkZTk1ZTEwYmEwMmYyY2IwODhl
OTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDcsOCArNDcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBJZGVudGlmaWVyOwotICAgIGNsYXNzIFNjb3BlQ2hhaW47Ci0gICAgY2xhc3Mg
U2NvcGVOb2RlOworICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgY2xhc3MgQ2FsbEFy
Z3VtZW50cyB7CiAgICAgcHVibGljOgpAQCAtOTMsOSArOTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5l
cmF0ZWRDb2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKCk7CiAK
LSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqLCBjb25zdCBTY29wZUNoYWlu
JiwgU3ltYm9sVGFibGUqLCBQcm9ncmFtQ29kZUJsb2NrKik7Ci0gICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTY29wZUNoYWluJiwgU3ltYm9sVGFibGUq
LCBDb2RlQmxvY2sqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqLCBjb25z
dCBTY29wZUNoYWluJiwgU3ltYm9sVGFibGUqLCBFdmFsQ29kZUJsb2NrKik7CisgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiwgU2NvcGVDaGFpbk5vZGUqLCBTeW1ib2xUYWJs
ZSosIFByb2dyYW1Db2RlQmxvY2sqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoRnVuY3Rp
b25Cb2R5Tm9kZSosIFNjb3BlQ2hhaW5Ob2RlKiwgU3ltYm9sVGFibGUqLCBDb2RlQmxvY2sqKTsK
KyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5
bWJvbFRhYmxlKiwgRXZhbENvZGVCbG9jayopOwogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAgICAgICBjb25zdCBD
b21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICptX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXM7IH0KQEAgLTUyMCw3ICs1MTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7CiAgICAgICAgIGJvb2wg
bV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm87CiAKLSAgICAgICAgY29uc3QgU2NvcGVDaGFpbiog
bV9zY29wZUNoYWluOworICAgICAgICBHbG9iYWw8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFp
bjsKICAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKICAgICAgICAgU2NvcGVO
b2RlKiBtX3Njb3BlTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuY3BwCmluZGV4IGIxYjMzMTVlNGU5NjlmMzg0NzVkMjFkNGRjNjZhZDFjMThlYjc1ODMuLmI5
OTk0NDY2Y2QwZTJjZDA0MzE2YmY5NGU3ZDlmOGNlMmZkMTc4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNzYsOSArNzYsOSBAQCBpbmxpbmUg
dm9pZCBSZWNvbXBpbGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKICAgICBpZiAoIW1fZnVu
Y3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuc2Vjb25kKQogICAgICAgICByZXR1cm47
CiAKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlvbi0+c2NvcGUoKS5nbG9iYWxPYmplY3Qo
KS0+SlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBm
dW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhl
YygpOwogICAgIGV4ZWN1dGFibGUtPmRpc2NhcmRDb2RlKCk7Ci0gICAgaWYgKG1fZGVidWdnZXIg
PT0gZnVuY3Rpb24tPnNjb3BlKCkuZ2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCisgICAgaWYg
KG1fZGVidWdnZXIgPT0gZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZGVidWdnZXIo
KSkKICAgICAgICAgbV9zb3VyY2VQcm92aWRlcnMuYWRkKGV4ZWN1dGFibGUtPnNvdXJjZSgpLnBy
b3ZpZGVyKCksIGV4ZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4IDlkMzc3ZWY5N2EwYTJkYjNhYWFjMzIyODVl
YTZjZjAxMWQ3ZTE2YjguLmY2YjQxNWNlY2JkMDk0NjJkM2NkM2E0OWM5OTJkY2I3NjZiN2FiMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOyB9Ci0gICAgICAgIGNvbnN0IFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPnNj
b3BlQ2hhaW4oKTsgfQorICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAgY29uc3QgVVN0
cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgY2FsY3VsYXRlZEZ1
bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDc0MDAwMWQ2
OGZiMTZhZGEyYmVlNGMyZDZjODZmNWE2ZDcxMTM4MmYuLjA1ZTkwNTY4ZjhkOTljY2EwN2NkNjdj
MTdmNWVjNDc3NTY2YTE3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhY2hlZENhbGwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBDYWNoZWRDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgaW50IGFyZ0NvdW50KQogICAgICAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQogICAgICAgICAg
ICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0ZXIoKSkKLSAgICAgICAgICAg
ICwgbV9nbG9iYWxPYmplY3RTY29wZShjYWxsRnJhbWUsIGZ1bmN0aW9uLT5zY29wZSgpLmdsb2Jh
bE9iamVjdCgpKQorICAgICAgICAgICAgLCBtX2dsb2JhbE9iamVjdFNjb3BlKGNhbGxGcmFtZSwg
ZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdC5nZXQoKSkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICBt
X2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+
anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ0NvdW50LCBmdW5jdGlvbi0+
c2NvcGUoKS5ub2RlKCkpOworICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+
cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUs
IGZ1bmN0aW9uLCBhcmdDb3VudCwgZnVuY3Rpb24tPnNjb3BlKCkpOwogICAgICAgICAgICAgbV92
YWxpZCA9ICFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDE5
MGE3YzFkMjUwOWMxMzc4NTJhMjZmZmMxYTgzNzNjNWI1ZDJkZDcuLmNlMjYzYTRlOWM3MDJmNzU5
ZTY4MzMzZDc2MGZkNjg5YWI2YTUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTI2LDEzICsyNiwxMyBAQAogI2luY2x1ZGUgIkpTR2xv
YmFsRGF0YS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgotI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpT
QyAgewogCiAgICAgY2xhc3MgQXJndW1lbnRzOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAg
ICBjbGFzcyBJbnRlcnByZXRlcjsKKyAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIC8v
IFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAv
LyBQYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgpAQCAtNTEs
MjMgKzUxLDEzIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICAvLyBHbG9iYWwgb2JqZWN0
IGluIHdoaWNoIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvZGUgd2FzIGRlZmluZWQuCiAgICAg
ICAgIC8vIERpZmZlcnMgZnJvbSBkeW5hbWljR2xvYmFsT2JqZWN0KCkgZHVyaW5nIGZ1bmN0aW9u
IGNhbGxzIGFjcm9zcyB3ZWIgYnJvd3NlciBmcmFtZXMuCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0OwotICAgICAgICB9CisgICAgICAgIGlubGlu
ZSBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiAgICAgICAg
IC8vIERpZmZlcnMgZnJvbSBsZXhpY2FsR2xvYmFsT2JqZWN0IGJlY2F1c2UgdGhpcyB3aWxsIGhh
dmUgRE9NIHdpbmRvdyBzaGVsbCByYXRoZXIgdGhhbgogICAgICAgICAvLyB0aGUgYWN0dWFsIERP
TSB3aW5kb3csIHdoaWNoIGNhbid0IGJlICJ0aGlzIiBmb3Igc2VjdXJpdHkgcmVhc29ucy4KLSAg
ICAgICAgSlNPYmplY3QqIGdsb2JhbFRoaXNWYWx1ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzY29wZUNoYWluKCktPmdsb2JhbFRoaXM7Ci0gICAgICAgIH0KKyAgICAg
ICAgaW5saW5lIEpTT2JqZWN0KiBnbG9iYWxUaGlzVmFsdWUoKSBjb25zdDsKIAotICAgICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoc2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiAqc2Nv
cGVDaGFpbigpLT5nbG9iYWxEYXRhOwotICAgICAgICB9CisgICAgICAgIGlubGluZSBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEoKSBjb25zdDsKIAogICAgICAgICAvLyBDb252ZW5pZW5jZSBmdW5j
dGlvbnMgZm9yIGFjY2VzcyB0byBnbG9iYWwgZGF0YS4KICAgICAgICAgLy8gSXQgdGFrZXMgYSBm
ZXcgbWVtb3J5IHJlZmVyZW5jZXMgdG8gZ2V0IGZyb20gYSBjYWxsIGZyYW1lIHRvIHRoZSBnbG9i
YWwgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggM2YyMWJhYTM3MDc1ODlmM2U4M2E4MGExZjQ2OTI5OWM1MTZhYjQ2Yy4u
MjlkNDI5Y2Y5N2YxM2M0YjIwNDAwZWU1ODdhNThmODJjYTkyMWQ4NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03NiwxMSAr
NzYsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1
cm5zIHRoZSBkZXB0aCBvZiB0aGUgc2NvcGUgY2hhaW4gd2l0aGluIGEgZ2l2ZW4gY2FsbCBmcmFt
ZS4KLXN0YXRpYyBpbnQgZGVwdGgoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFNjb3BlQ2hhaW4mIHNj
KQorc3RhdGljIGludCBkZXB0aChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU2NvcGVDaGFpbk5vZGUq
IHNjKQogewogICAgIGlmICghY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBzYy5sb2NhbERlcHRoKCk7CisgICAgcmV0dXJuIHNj
LT5sb2NhbERlcHRoKCk7CiB9CiAKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpIApAQCAtNTc5LDkg
KzU3OSw2IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUo
Q2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgICAgICAgICBhc0FyZ3VtZW50
cyhhcmd1bWVudHMpLT5jb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCi0gICAgaWYgKG9sZENvZGVC
bG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKQotICAgICAgICBzY29wZUNoYWluLT5kZXJlZigp
OwotCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUo
KTsKICAgICBpZiAoY2FsbGVyRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTcxMCwxMSArNzA3LDEwIEBAIE5FVkVSX0lOTElORSBIYW5kbGVy
SW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwg
SlNWCiAKICAgICAvLyBVbndpbmQgdGhlIHNjb3BlIGNoYWluIHdpdGhpbiB0aGUgZXhjZXB0aW9u
IGhhbmRsZXIncyBjYWxsIGZyYW1lLgogICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0g
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCk7Ci0gICAgU2NvcGVDaGFpbiBzYyhzY29wZUNoYWluKTsK
ICAgICBpbnQgc2NvcGVEZWx0YSA9IDA7CiAgICAgaWYgKCFjb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSB8fCBjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIAogICAg
ICAgICB8fCBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpKQotICAgICAgICBzY29wZURlbHRhID0gZGVwdGgoY29kZUJsb2NrLCBz
YykgLSBoYW5kbGVyLT5zY29wZURlcHRoOworICAgICAgICBzY29wZURlbHRhID0gZGVwdGgoY29k
ZUJsb2NrLCBzY29wZUNoYWluKSAtIGhhbmRsZXItPnNjb3BlRGVwdGg7CiAgICAgQVNTRVJUKHNj
b3BlRGVsdGEgPj0gMCk7CiAgICAgd2hpbGUgKHNjb3BlRGVsdGEtLSkKICAgICAgICAgc2NvcGVD
aGFpbiA9IHNjb3BlQ2hhaW4tPnBvcCgpOwpAQCAtNzYxLDEwICs3NTcsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgUwogICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3Bl
Q2hhaW4sIENhbGxGcmFtZTo6bm9DYWxsZXIoKSwgY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMs
IDApOwogICAgIG5ld0NhbGxGcmFtZS0+dW5jaGVja2VkUihuZXdDYWxsRnJhbWUtPmhvc3RUaGlz
UmVnaXN0ZXIoKSkgPSBKU1ZhbHVlKHRoaXNPYmopOwogCi0gICAgaWYgKGNvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpKQotICAgICAgICBzY29wZUNoYWluLT5yZWYoKTsKLQotICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShjYWxsRnJhbWUsIHNjb3Bl
Q2hhaW4tPmdsb2JhbE9iamVjdCk7CisgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2Jh
bE9iamVjdFNjb3BlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsK
IAogICAgIFByb2ZpbGVyKiogcHJvZmlsZXIgPSBQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVm
ZXJlbmNlKCk7CiAgICAgaWYgKCpwcm9maWxlcikKQEAgLTgzNSw3ICs4MjgsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3Qq
IGZ1bmN0aW9uLCBDYWxsVAogCiAgICAgICAgIG5ld0NhbGxGcmFtZS0+aW5pdChuZXdDb2RlQmxv
Y2ssIDAsIGNhbGxEYXRhU2NvcGVDaGFpbiwgY2FsbEZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxh
ZygpLCBhcmdDb3VudCwgZnVuY3Rpb24pOwogCi0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RT
Y29wZSBnbG9iYWxPYmplY3RTY29wZShuZXdDYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9i
amVjdFNjb3BlKG5ld0NhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluLT5nbG9iYWxPYmplY3Qu
Z2V0KCkpOwogCiAgICAgICAgIFByb2ZpbGVyKiogcHJvZmlsZXIgPSBQcm9maWxlcjo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlKCk7CiAgICAgICAgIGlmICgqcHJvZmlsZXIpCkBAIC04NjcsNyAr
ODYwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKICAgICBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0ZXJPZmZzZXQp
OwogICAgIG5ld0NhbGxGcmFtZS0+aW5pdCgwLCAwLCBzY29wZUNoYWluLCBjYWxsRnJhbWUtPmFk
ZEhvc3RDYWxsRnJhbWVGbGFnKCksIGFyZ0NvdW50LCBmdW5jdGlvbik7CiAKLSAgICBEeW5hbWlj
R2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUobmV3Q2FsbEZyYW1lLCBzY29wZUNo
YWluLT5nbG9iYWxPYmplY3QpOworICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxP
YmplY3RTY29wZShuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7
CiAKICAgICBQcm9maWxlcioqIHByb2ZpbGVyID0gUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJl
ZmVyZW5jZSgpOwogICAgIGlmICgqcHJvZmlsZXIpCkBAIC05MjQsNyArOTE3LDcgQEAgSlNPYmpl
Y3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U09iamVjdCogY29uc3RydWMKIAogICAgICAgICBuZXdDYWxsRnJhbWUtPmluaXQobmV3Q29kZUJs
b2NrLCAwLCBjb25zdHJ1Y3REYXRhU2NvcGVDaGFpbiwgY2FsbEZyYW1lLT5hZGRIb3N0Q2FsbEZy
YW1lRmxhZygpLCBhcmdDb3VudCwgY29uc3RydWN0b3IpOwogCi0gICAgICAgIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERh
dGFTY29wZUNoYWluLT5nbG9iYWxPYmplY3QpOworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0
U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUobmV3Q2FsbEZyYW1lLCBjb25zdHJ1Y3REYXRhU2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsKIAogICAgICAgICBQcm9maWxlcioqIHByb2ZpbGVy
ID0gUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpOwogICAgICAgICBpZiAoKnBy
b2ZpbGVyKQpAQCAtOTU5LDcgKzk1Miw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAgICAg
bmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSArIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICBuZXdDYWxsRnJhbWUtPmluaXQoMCwgMCwgc2NvcGVD
aGFpbiwgY2FsbEZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxhZygpLCBhcmdDb3VudCwgY29uc3Ry
dWN0b3IpOwogCi0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KTsKKyAgICBEeW5hbWljR2xv
YmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUobmV3Q2FsbEZyYW1lLCBzY29wZUNoYWlu
LT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogCiAgICAgUHJvZmlsZXIqKiBwcm9maWxlciA9IFByb2Zp
bGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKTsKICAgICBpZiAoKnByb2ZpbGVyKQpAQCAt
MTA3Niw3ICsxMDY5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBpZiAobV9yZWVu
dHJ5RGVwdGggPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgbV9yZWVudHJ5RGVwdGgg
Pj0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRyeURlcHRoKQogICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAot
ICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShjYWxsRnJhbWUs
IHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCk7CisgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
IGdsb2JhbE9iamVjdFNjb3BlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0Lmdl
dCgpKTsKIAogICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5jb21waWxlKGNhbGxG
cmFtZSwgc2NvcGVDaGFpbik7CiAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKQEAg
LTEwODQsNyArMTA3Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgRXZhbENvZGVC
bG9jayogY29kZUJsb2NrID0gJmV2YWwtPmdlbmVyYXRlZEJ5dGVjb2RlKCk7CiAKICAgICBKU09i
amVjdCogdmFyaWFibGVPYmplY3Q7Ci0gICAgZm9yIChTY29wZUNoYWluTm9kZSogbm9kZSA9IHNj
b3BlQ2hhaW47IDsgbm9kZSA9IG5vZGUtPm5leHQpIHsKKyAgICBmb3IgKFNjb3BlQ2hhaW5Ob2Rl
KiBub2RlID0gc2NvcGVDaGFpbjsgOyBub2RlID0gbm9kZS0+bmV4dC5nZXQoKSkgewogICAgICAg
ICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlmIChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmpl
Y3QoKSkgewogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Zhcmlh
YmxlT2JqZWN0Kj4obm9kZS0+b2JqZWN0LmdldCgpKTsKQEAgLTExMzMsOSArMTEyNiw2IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywg
MCwgc2NvcGVDaGFpbiwgY2FsbEZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxhZygpLCBjb2RlQmxv
Y2stPm1fbnVtUGFyYW1ldGVycywgMCk7CiAgICAgbmV3Q2FsbEZyYW1lLT51bmNoZWNrZWRSKG5l
d0NhbGxGcmFtZS0+aG9zdFRoaXNSZWdpc3RlcigpKSA9IEpTVmFsdWUodGhpc09iaik7CiAKLSAg
ICBpZiAoY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCi0gICAgICAgIHNjb3BlQ2hh
aW4tPnJlZigpOwotCiAgICAgUHJvZmlsZXIqKiBwcm9maWxlciA9IFByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKTsKICAgICBpZiAoKnByb2ZpbGVyKQogICAgICAgICAoKnByb2Zp
bGVyKS0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5zb3VyY2VVUkwoKSwgZXZhbC0+bGlu
ZU5vKCkpOwpAQCAtMzgwNSw3ICszNzk1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgICovCiAgICAgICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgewogICAgICAg
ICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IG5ldyAoY2Fs
bEZyYW1lKSBKU1N0YXRpY1Njb3BlT2JqZWN0KGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwg
ZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgICAgIGZ1bmMtPnNjb3BlKCku
cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KTsKKyAgICAgICAgICAgIGZ1bmMtPnNldFNjb3BlKCpn
bG9iYWxEYXRhLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShm
dW5jKTsKQEAgLTM4MzUsNyArMzgyNSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAg
IFJlZ2lzdGVyKiBuZXdDYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0
ZXJPZmZzZXQ7CiAgICAgICAgIFJlZ2lzdGVyKiBhcmd2ID0gbmV3Q2FsbEZyYW1lIC0gUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gYXJnQ291bnQ7CiAgICAgICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gYXJndlswXS5qc1ZhbHVlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0OworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5zY29wZUNoYWlu
KCktPmdsb2JhbE9iamVjdC5nZXQoKTsKIAogICAgICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2Jh
bE9iamVjdCAmJiBmdW5jVmFsID09IGdsb2JhbE9iamVjdC0+ZXZhbEZ1bmN0aW9uKCkpIHsKICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbEV2YWwoY2FsbEZyYW1lLCByZWdpc3RlckZp
bGUsIGFyZ3YsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CkBAIC00MTUwLDkgKzQxNDAsNiBA
QCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGludCByZXN1bHQgPSB2UENbMV0udS5v
cGVyYW5kOwogCi0gICAgICAgIGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCkgJiYgY2FsbEZyYW1lLT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5kZXJl
ZigpOwotCiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBjYWxsRnJhbWUtPnIocmVzdWx0
KS5qc1ZhbHVlKCk7CiAKICAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5yZXR1cm5WUEMoKTsKQEAg
LTQxOTEsOSArNDE3OCw2IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaW50IHJl
c3VsdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpICYmIGNhbGxGcmFtZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdp
c3RlcigpKS5qc1ZhbHVlKCkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+
ZGVyZWYoKTsKLQogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gY2FsbEZyYW1lLT5yKHJl
c3VsdCkuanNWYWx1ZSgpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSghcmV0dXJuVmFsdWUuaXNP
YmplY3QoKSkpCkBAIC00MjM4LDcgKzQyMjIsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAg
ICAgICBpZiAoIWNhbGxGcmFtZS0+cihhY3RpdmF0aW9uUmVnKS5qc1ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoZ2xvYmFsRGF0YSkgSlNBY3Rp
dmF0aW9uKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGFjdGl2
YXRpb25SZWcpID0gSlNWYWx1ZShhY3RpdmF0aW9uKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+
c2V0U2NvcGVDaGFpbihjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Y29weSgpLT5wdXNoKGFjdGl2
YXRpb24pKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgdlBD
ICs9IE9QQ09ERV9MRU5HVEgob3BfY3JlYXRlX2FjdGl2YXRpb24pOwogICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CkBAIC00Mjc3LDcgKzQyNjEsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgog
ICAgICAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGFz
T2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCkubm9kZSgpLT5nbG9iYWxPYmplY3QtPmVt
cHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rv
ci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwogICAgICAg
ICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodGhpc1JlZ2lzdGVyKSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGNhbGxGcmFtZSwgc3RydWN0dXJlKTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdU
SChvcF9jcmVhdGVfdGhpcyk7CkBAIC00NjQzLDExICs0NjI3LDYgQEAgc2tpcF9pZF9jdXN0b21f
c2VsZjoKICAgICAgICAgICAgcHJvZ3JhbS4gUmV0dXJuIGNvbnRyb2wgdG8gdGhlIGNhbGxpbmcg
bmF0aXZlIGNvZGUuCiAgICAgICAgICovCiAKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKSB7Ci0gICAgICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
biA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwotICAgICAgICAgICAgQVNTRVJUKHNjb3BlQ2hh
aW4tPnJlZkNvdW50ID4gMSk7Ci0gICAgICAgICAgICBzY29wZUNoYWluLT5kZXJlZigpOwotICAg
ICAgICB9CiAgICAgICAgIGludCByZXN1bHQgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5yKHJlc3VsdCkuanNWYWx1ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGZkZDBkNDcxZjMwYzExYjU3NjNmZWNmMmFiYTgw
MGYxYjg1YzAxNTUuLjUyNGU1NzZiN2Y2OTljMDI5NWM2YjFhNWJiNjY4MDhjODE5YWRiNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIHZvaWQgSklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSgp
CiB7CiAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rp
b24sIG1fc2NvcGVDaGFpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbiwgbV9ub2RlKSks
IHJlZ1QzKTsgLy8gbmV3U2NvcGVDaGFpbgorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JK
RUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGVDaGFpbikpLCByZWdUMyk7IC8vIG5ld1Nj
b3BlQ2hhaW4KICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
UmVnaXN0ZXJGaWxlOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7CiAgICAgc3RvcmVQdHIocmVnVDMsIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIFJlZ2lz
dGVyRmlsZTo6U2NvcGVDaGFpbiAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIC8v
IEZhc3QgdmVyc2lvbiBvZiBzdGFjayBmcmFtZSBpbml0aWFsaXphdGlvbiwgZGlyZWN0bHkgcmVs
YXRpdmUgdG8gZWRpLgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIG9taXRzIHRvIHNldCB1cCBSZWdp
c3RlckZpbGU6OkNvZGVCbG9jaywgd2hpY2ggaXMgc2V0IGluIHRoZSBjYWxsZWUKIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGVD
aGFpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbiwgbV9ub2RlKSksIHJlZ1QxKTsgLy8g
bmV3U2NvcGVDaGFpbgorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9G
KEpTRnVuY3Rpb24sIG1fc2NvcGVDaGFpbikpLCByZWdUMSk7IC8vIG5ld1Njb3BlQ2hhaW4KIAog
ICAgIHN0b3JlMzIoSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCAo
cmVnaXN0ZXJPZmZzZXQgKyBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lz
dGVyLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCAocmVnaXN0ZXJPZmZzZXQgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxlckZyYW1lKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBkNTBm
MDc3NDA3ZWQ3OTljNzIzZjJhNDQxMDY5YmNmNjEyY2VjMjZkLi5hYzIzMWE5YTUyYWUwZWZkMzY1
N2E1ZWQzZWU1YWYwNTNhMTRkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsSW5p
dGlhbGl6ZUNhbGxGcmFtZSgpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLCByZWdUMSBo
b2xkcyBhcmdDb3VudAogICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRP
RihKU0Z1bmN0aW9uLCBtX3Njb3BlQ2hhaW4pICsgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW4s
IG1fbm9kZSkpLCByZWdUMyk7IC8vIHNjb3BlQ2hhaW4KKyAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlQ2hhaW4pKSwgcmVnVDMpOyAv
LyBzY29wZUNoYWluCiAgICAgc3RvcmVQdHIocmVnVDAsIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIFJlZ2lzdGVyRmlsZTo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSkpOyAvLyBjYWxsZWUKICAgICBzdG9yZVB0cihyZWdUMywgQWRkcmVzcyhjYWxsRnJhbWVS
ZWdpc3RlciwgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpOyAvLyBzY29wZUNoYWluCiB9CkBAIC0xMDcsMTIgKzEwNyw2IEBAIHZv
aWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKLSAg
ICAvLyBXZSBjb3VsZCBKSVQgZ2VuZXJhdGUgdGhlIGRlcmVmLCBvbmx5IGNhbGxpbmcgb3V0IHRv
IEMgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLgotICAgIGlmIChtX2NvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpKSB7Ci0gICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQg
PSBicmFuY2gzMihFcXVhbCwgdGFnRm9yKG1fY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIo
KSksIEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKLSAgICAgICAgSklUU3R1YkNhbGwo
dGhpcywgY3RpX29wX3JldF9zY29wZUNoYWluKS5jYWxsKCk7Ci0gICAgICAgIGFjdGl2YXRpb25O
b3RDcmVhdGVkLmxpbmsodGhpcyk7Ci0gICAgfQogICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJl
Z1QwKTsKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlJl
dHVyblBDLCByZWdUMik7CiAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0
ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtMTI2LDEzICsxMjAs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRoaXNSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogCi0gICAgLy8gV2UgY291bGQgSklUIGdlbmVyYXRlIHRoZSBkZXJl
Ziwgb25seSBjYWxsaW5nIG91dCB0byBDIHdoZW4gdGhlIHJlZmNvdW50IGhpdHMgemVyby4KLSAg
ICBpZiAobV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkgewotICAgICAgICBKdW1w
IGFjdGl2YXRpb25Ob3RDcmVhdGVkID0gYnJhbmNoMzIoRXF1YWwsIHRhZ0ZvcihtX2NvZGVCbG9j
ay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLCBJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7
Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXRfc2NvcGVDaGFpbikuY2FsbCgp
OwotICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKHRoaXMpOwotICAgIH0KLQogICAg
IGVtaXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUp
KSwgcmVnVDIpOwpAQCAtMjkxLDcgKzI3OCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9w
Y29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAK
ICAgICAvLyBGYXN0IHZlcnNpb24gb2Ygc3RhY2sgZnJhbWUgaW5pdGlhbGl6YXRpb24sIGRpcmVj
dGx5IHJlbGF0aXZlIHRvIGVkaS4KICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbWl0cyB0byBzZXQg
dXAgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2ssIHdoaWNoIGlzIHNldCBpbiB0aGUgY2FsbGVlCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9z
Y29wZUNoYWluKSArIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluLCBtX25vZGUpKSwgcmVnVDIp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24s
IG1fc2NvcGVDaGFpbikpLCByZWdUMik7CiAKICAgICBzdG9yZTMyKEltbTMyKGFyZ0NvdW50KSwg
QWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgKHJlZ2lzdGVyT2Zmc2V0ICsgUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsK
ICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rl
ciwgKHJlZ2lzdGVyT2Zmc2V0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAppbmRleCA0ZWE1ZWMwYzVkZWRjNzY4OTYwYTljMWU3Mjg5ZGU1MTE4NDZk
ZjMzLi5mYzc2OWRiZmQ4NWNhNTJlZmIzODI2NDhmMmMwMWFmYzljNDdmMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTMzMCw5ICszMzAsNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0g
ICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCi0gICAgICAgIEpJVFN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9lbmQpLmNhbGwoKTsKLQogICAgIEFTU0VSVChyZXR1cm5WYWx1
ZVJlZ2lzdGVyICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlUmVnaXN0ZXIp
OwogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MoY2FsbEZyYW1l
UmVnaXN0ZXIsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSk7CkBAIC01NDMsMTIgKzU0MCw2IEBAIHZvaWQgSklUOjplbWl0X29wX3Rl
YXJfb2ZmX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICAvLyBXZSBjb3VsZCBKSVQgZ2VuZXJhdGUgdGhlIGRlcmVmLCBvbmx5IGNhbGxpbmcgb3V0IHRv
IEMgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLgotICAgIGlmIChtX2NvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpKSB7Ci0gICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQg
PSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25S
ZWdpc3RlcigpKSk7Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXRfc2NvcGVD
aGFpbikuY2FsbCgpOwotICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKHRoaXMpOwot
ICAgIH0KICAgICBBU1NFUlQoY2FsbEZyYW1lUmVnaXN0ZXIgIT0gcmVnVDEpOwogICAgIEFTU0VS
VChyZWdUMSAhPSByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKICAgICBBU1NFUlQocmV0dXJuVmFsdWVS
ZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC01NjksMTMgKzU2MCw2IEBAIHZvaWQg
SklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICAvLyBXZSBjb3VsZCBKSVQgZ2VuZXJhdGUgdGhlIGRlcmVmLCBvbmx5
IGNhbGxpbmcgb3V0IHRvIEMgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLgotICAgIGlmICht
X2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKSB7Ci0gICAgICAgIEp1bXAgYWN0aXZh
dGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0
aV9vcF9yZXRfc2NvcGVDaGFpbikuY2FsbCgpOwotICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRl
ZC5saW5rKHRoaXMpOwotICAgIH0KLQogICAgIEFTU0VSVChjYWxsRnJhbWVSZWdpc3RlciAhPSBy
ZWdUMSk7CiAgICAgQVNTRVJUKHJlZ1QxICE9IHJldHVyblZhbHVlUmVnaXN0ZXIpOwogICAgIEFT
U0VSVChyZXR1cm5WYWx1ZVJlZ2lzdGVyICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBjM2MwMWM0ODJm
Zjk5Yjk5N2QwYjdjODRiMGMzY2ViMzhhYzY0OWRkLi4wYzg0MDJiZjNiYjAxM2QyYjAzMTMzNDQ0
NjgxNTIxZDljOTBjOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC00NDgsOCArNDQ4LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX2VuZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGlmIChtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpKQotICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
ZW5kKS5jYWxsKCk7CiAgICAgQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0ZXIgIT0gY2FsbEZyYW1l
UmVnaXN0ZXIpOwogICAgIGVtaXRMb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IHJlZ1QxLCByZWdUMCk7CiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRk
cmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKaW5kZXggODVkNWUwZDE5Y2IzNDhlNmRiMGYxN2M2ODFmMmY3MTM5NWI4MDY3NS4u
ZTUwYWEzNjA2YmM1NDNiYzc0N2I1Mzg0OTIxNmNmODZlYmNkYTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTExNzQsNyArMTE3NCw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jcmVhdGVfdGhpcykKICAgICBpZiAocHJvdG8u
aXNPYmplY3QoKSkKICAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0
b3JJRCgpOwogICAgIGVsc2UKLSAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3Bl
KCkubm9kZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgICAg
IHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2Jq
ZWN0U3RydWN0dXJlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChjYWxsRnJhbWUsIHN0cnVjdHVyZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xMjA0LDE1ICsxMjA0LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9lbmQpCi17
Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4gPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwot
ICAgIEFTU0VSVChzY29wZUNoYWluLT5yZWZDb3VudCA+IDEpOwotICAgIHNjb3BlQ2hhaW4tPmRl
cmVmKCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9hZGQp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTg0Nyw3ICsx
ODM4LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfaml0Q29tcGlsZSkK
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGFzRnVuY3Rpb24oc3RhY2tGcmFtZS5jYWxsRnJh
bWUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsK
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCk7Ci0gICAgU2NvcGVDaGFpbk5vZGUqIGNhbGxEYXRhU2NvcGVDaGFpbiA9IGZ1bmN0aW9u
LT5zY29wZSgpLm5vZGUoKTsKKyAgICBTY29wZUNoYWluTm9kZSogY2FsbERhdGFTY29wZUNoYWlu
ID0gZnVuY3Rpb24tPnNjb3BlKCk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gZXhlY3V0YWJsZS0+
Y29tcGlsZUZvckNhbGwoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGVDaGFpbik7
CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gZXJyb3I7CkBAIC0xODY4LDcgKzE4NTksNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0X2ppdENvbXBpbGUpCiAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZWUoKSk7
CiAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwotICAgIFNj
b3BlQ2hhaW5Ob2RlKiBjYWxsRGF0YVNjb3BlQ2hhaW4gPSBmdW5jdGlvbi0+c2NvcGUoKS5ub2Rl
KCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIGNhbGxEYXRhU2NvcGVDaGFpbiA9IGZ1bmN0aW9uLT5z
Y29wZSgpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV4ZWN1dGFibGUtPmNvbXBpbGVGb3JDb25z
dHJ1Y3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGVDaGFpbik7CiAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uID0gZXJyb3I7CkBAIC0xOTI5LDcgKzE5MjAsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogICAgIGNhbGxGcmFtZS0+c2V0Q2FsbGVyRnJh
bWUob2xkQ2FsbEZyYW1lKTsKICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKGFyZ0NvdW50KTsKICAgICBjYWxsRnJhbWUtPnNldENhbGxlZShjYWxsZWUpOwotICAg
IGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlKCkubm9kZSgpKTsKKyAgICBj
YWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZSgpKTsKICAgICBjYWxsRnJhbWUt
PnNldFJldHVyblBDKHBjLnZhbHVlKCkpOwogCiAgICAgQVNTRVJUKCh2b2lkKiljYWxsRnJhbWUg
PD0gc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUtPmVuZCgpKTsKQEAgLTE5ODgsNyArMTk3OSw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKICAg
ICBjYWxsRnJhbWUtPnNldENhbGxlckZyYW1lKG9sZENhbGxGcmFtZSk7CiAgICAgY2FsbEZyYW1l
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCk7CiAgICAgY2FsbEZyYW1l
LT5zZXRDYWxsZWUoY2FsbGVlKTsKLSAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVl
LT5zY29wZSgpLm5vZGUoKSk7CisgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+
c2NvcGUoKSk7CiAgICAgY2FsbEZyYW1lLT5zZXRSZXR1cm5QQyhwYy52YWx1ZSgpKTsKIAogICAg
IEFTU0VSVCgodm9pZCopY2FsbEZyYW1lIDw9IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLT5lbmQo
KSk7CkBAIC0yMDA5LDcgKzIwMDAsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1f
bGF6eUxpbmtDYWxsKQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvckNhbGwoKS5hZGRyZXNzRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3JDYWxsKGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgp
Lm5vZGUoKSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y29tcGlsZUZvckNhbGwoY2FsbEZyYW1lLCBjYWxsZWUtPnNjb3BlKCkpOwogICAgICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICAgICAgcmV0dXJu
IDA7CkBAIC0yMDQzLDcgKzIwMzQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1f
bGF6eUxpbmtDb25zdHJ1Y3QpCiAgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkuYWRkcmVzc0ZvckNhbGwoKTsKICAgICBlbHNlIHsKICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yQ29uc3RydWN0KGNhbGxGcmFtZSwg
Y2FsbGVlLT5zY29wZSgpLm5vZGUoKSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvckNvbnN0cnVjdChjYWxsRnJhbWUsIGNhbGxlZS0+c2Nv
cGUoKSk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmdsb2JhbERhdGEsIFJldHVybkFkZHJlc3NQ
dHIoY2FsbEZyYW1lLT5yZXR1cm5QQygpKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKQEAgLTIwNzAsNyArMjA2MSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEpTT2JqZWN0Kiwgb3BfcHVzaF9hY3RpdmF0aW9uKQogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoc3Rh
Y2tGcmFtZS5nbG9iYWxEYXRhKSBKU0FjdGl2YXRpb24oc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKLSAgICBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+
c2V0U2NvcGVDaGFpbihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5jb3B5KCkt
PnB1c2goYWN0aXZhdGlvbikpOworICAgIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zZXRTY29wZUNo
YWluKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikp
OwogICAgIHJldHVybiBhY3RpdmF0aW9uOwogfQogCkBAIC0yMTc0LDE0ICsyMTY1LDYgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHJvZmlsZV9kaWRfY2FsbCkKICAgICAoKnN0YWNr
RnJhbWUuZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKS0+ZGlkRXhlY3V0ZShzdGFja0ZyYW1lLmNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSk7CiB9CiAKLURFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wX3JldF9zY29wZUNoYWluKQotewotICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEFTU0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7Ci0gICAgc3RhY2tGcmFtZS5jYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKS0+ZGVyZWYoKTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04o
SlNPYmplY3QqLCBvcF9uZXdfYXJyYXkpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwpAQCAtMzAwOCw3ICsyOTkxLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNP
YmplY3QqLCBvcF9uZXdfZnVuY19leHApCiAgICAgICovCiAgICAgaWYgKCFmdW5jdGlvbi0+bmFt
ZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2Nv
cGVPYmplY3QgPSBuZXcgKGNhbGxGcmFtZSkgSlNTdGF0aWNTY29wZU9iamVjdChjYWxsRnJhbWUs
IGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Ci0gICAgICAg
IGZ1bmMtPnNjb3BlKCkucHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KTsKKyAgICAgICAgZnVuYy0+
c2V0U2NvcGUoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVu
Y3Rpb25TY29wZU9iamVjdCkpOwogICAgIH0KIAogICAgIHJldHVybiBmdW5jOwpAQCAtMzExOCw3
ICszMTAxLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NhbGxf
ZXZhbCkKICAgICBSZWdpc3RlciogbmV3Q2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgIFJlZ2lzdGVyKiBhcmd2ID0gbmV3Q2FsbEZyYW1lIC0g
UmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gYXJnQ291bnQ7CiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBhcmd2WzBdLmpzVmFsdWUoKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdDsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmds
b2JhbE9iamVjdC5nZXQoKTsKIAogICAgIGlmIChiYXNlVmFsdWUgPT0gZ2xvYmFsT2JqZWN0ICYm
IGZ1bmNWYWwgPT0gZ2xvYmFsT2JqZWN0LT5ldmFsRnVuY3Rpb24oKSkgewogICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGludGVycHJldGVyLT5jYWxsRXZhbChjYWxsRnJhbWUsIHJlZ2lzdGVyRmls
ZSwgYXJndiwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAppbmRleCA2NmVkZjQ1MTMyNGY4OTIxMjE0MjgyZDJjMDJhYTQ3OGM1NmE0OTYz
Li42NWY2YTU1YmM0MTY2ZjhjMmEyOTk0NTY2Zjg4MzZhYWQ4MDdiZWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0zOTAsNyArMzkwLDYgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KFNUVUJfQVJHU19E
RUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2dldHRlcihTVFVCX0FS
R1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9zZXR0ZXIoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKTsKLSAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9yZXRfc2NvcGVD
aGFpbihTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rl
YXJfb2ZmX2FjdGl2YXRpb24oU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9T
VFVCIGN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKaW5k
ZXggYTg2MmVhMDFlNTJkNzYxZmQzNTE4YzNkODgxNmQ1NmFmY2JkNWUyZC4uMjVhODkxNjQxOTYw
OGUyNjg0YWI0YzkzYjRjMDdhZGUzYjI4NmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAKIHVzaW5n
IHN0ZDo6bWluOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IGVlYjhiMGQ0M2QzMTFhMjAzZTdlNjZiZWZmZTM1ZTYzOWViMTkxMzEuLjgzZDhi
ZDg1YWRkMTJhOTRmZDhjN2I4MTE0ODdlNTcxYjVhOTA0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC00NywxOSArNDcsMTkgQEAgQ29tcGxl
dGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwogfQogCi1Db21wbGV0aW9uIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKK0NvbXBsZXRpb24gZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhleGVjKTsK
ICAgICBBU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9PSB3dGZUaHJl
YWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpKTsKIAogICAgIFJlZlB0cjxQcm9ncmFt
RXhlY3V0YWJsZT4gcHJvZ3JhbSA9IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291
cmNlKTsKLSAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jb21waWxlKGV4ZWMsIHNjb3Bl
Q2hhaW4ubm9kZSgpKTsKKyAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jb21waWxlKGV4
ZWMsIHNjb3BlQ2hhaW4pOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIENvbXBsZXRp
b24oVGhyb3csIGVycm9yKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gKCF0aGlzVmFsdWUg
fHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpID8gZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpIDogdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQg
PSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKHByb2dyYW0uZ2V0KCksIGV4ZWMsIHNjb3Bl
Q2hhaW4ubm9kZSgpLCB0aGlzT2JqKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVy
cHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbS5nZXQoKSwgZXhlYywgc2NvcGVDaGFpbiwgdGhpc09i
aik7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgSlNWYWx1ZSBl
eGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaAppbmRleCA2M2IzMTVlMThmNjM5ZGQ4NGY1ZWJjYThhNWRlYTA3N2Y0
MzJlMzIwLi4xZGQyNWZkMTFhZTNmZGMyZTg1NzgzYWQxNTI0YzZmMmIwYWNiNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0yOCw3ICsyOCw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBTY29w
ZUNoYWluOworICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7
CiAKICAgICBlbnVtIENvbXBsVHlwZSB7IE5vcm1hbCwgQnJlYWssIENvbnRpbnVlLCBSZXR1cm5W
YWx1ZSwgVGhyb3csIEludGVycnVwdGVkLCBUZXJtaW5hdGVkIH07CkBAIC01Niw3ICs1Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4
ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKLSAgICBDb21wbGV0aW9uIGV2YWx1YXRlKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBKU1ZhbHVlKCkpOworICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1Zh
bHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGQ0YjgyMzI2NjI0YTE0NWQ4YzY5
ZWQ2ZjAxN2I2N2MyMGQwZTUxOWYuLjU5N2YxZTlhMTg1YjNlN2ViMTZkYzU0MDM4NGFlZDNlY2Uy
OTlkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252
ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVy
c2lvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgog
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1
ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCmluZGV4IGM2YmNhZWNlNTg0ZDc4NDI5YTA4NTRhNWE5OGQxYmFlYjYxYmM0ZWYuLjYw
N2EyYzJkNzVkNjI2ZTllMmE4OTg5YzJmYjcwNGMzNzEzYzE3MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMDEsMTIgKzEwMSwxMSBAQCBK
U09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZQogICAgIH0KICAgICByZWNvcmRQYXJzZShldmFsTm9kZS0+
ZmVhdHVyZXMoKSwgZXZhbE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGV2YWxOb2RlLT5s
aW5lTm8oKSwgZXZhbE5vZGUtPmxhc3RMaW5lKCkpOwogCi0gICAgU2NvcGVDaGFpbiBzY29wZUNo
YWluKHNjb3BlQ2hhaW5Ob2RlKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC5nZXQoKTsKIAogICAgIEFTU0VSVCgh
bV9ldmFsQ29kZUJsb2NrKTsKLSAgICBtX2V2YWxDb2RlQmxvY2sgPSBhZG9wdFB0cihuZXcgRXZh
bENvZGVCbG9jayh0aGlzLCBnbG9iYWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNjb3Bl
Q2hhaW4ubG9jYWxEZXB0aCgpKSk7Ci0gICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5l
cmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKGV2YWxOb2RlLmdldCgpLCBzY29w
ZUNoYWluLCBtX2V2YWxDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCksIG1fZXZhbENvZGVCbG9jay5n
ZXQoKSkpKTsKKyAgICBtX2V2YWxDb2RlQmxvY2sgPSBhZG9wdFB0cihuZXcgRXZhbENvZGVCbG9j
ayh0aGlzLCBnbG9iYWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNjb3BlQ2hhaW5Ob2Rl
LT5sb2NhbERlcHRoKCkpKTsKKyAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRv
cihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3IoZXZhbE5vZGUuZ2V0KCksIHNjb3BlQ2hh
aW5Ob2RlLCBtX2V2YWxDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCksIG1fZXZhbENvZGVCbG9jay5n
ZXQoKSkpKTsKICAgICBpZiAoKGV4Y2VwdGlvbiA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKSkpIHsK
ICAgICAgICAgbV9ldmFsQ29kZUJsb2NrLmNsZWFyKCk7CiAgICAgICAgIGV2YWxOb2RlLT5kZXN0
cm95RGF0YSgpOwpAQCAtMTU0LDExICsxNTMsMTAgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MK
ICAgICB9CiAgICAgcmVjb3JkUGFyc2UocHJvZ3JhbU5vZGUtPmZlYXR1cmVzKCksIHByb2dyYW1O
b2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBwcm9ncmFtTm9kZS0+bGluZU5vKCksIHByb2dy
YW1Ob2RlLT5sYXN0TGluZSgpKTsKIAotICAgIFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzY29wZUNo
YWluTm9kZSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4u
Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3Bl
Q2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgCiAgICAgbV9wcm9ncmFtQ29kZUJs
b2NrID0gYWRvcHRQdHIobmV3IFByb2dyYW1Db2RlQmxvY2sodGhpcywgR2xvYmFsQ29kZSwgZ2xv
YmFsT2JqZWN0LCBzb3VyY2UoKS5wcm92aWRlcigpKSk7Ci0gICAgT3duUHRyPEJ5dGVjb2RlR2Vu
ZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHByb2dyYW1O
b2RlLmdldCgpLCBzY29wZUNoYWluLCAmZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLCBtX3By
b2dyYW1Db2RlQmxvY2suZ2V0KCkpKSk7CisgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBn
ZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHByb2dyYW1Ob2RlLmdldCgp
LCBzY29wZUNoYWluTm9kZSwgJmdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKSwgbV9wcm9ncmFt
Q29kZUJsb2NrLmdldCgpKSkpOwogICAgIGlmICgoZXhjZXB0aW9uID0gZ2VuZXJhdG9yLT5nZW5l
cmF0ZSgpKSkgewogICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAg
cHJvZ3JhbU5vZGUtPmRlc3Ryb3lEYXRhKCk7CkBAIC0xOTQsMTIgKzE5MiwxMSBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbgogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcobV9wYXJhbWV0ZXJzLCBt
X25hbWUpOwogICAgIHJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJvZHktPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKIAotICAg
IFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzY29wZUNoYWluTm9kZSk7Ci0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QuZ2V0
KCk7CiAKICAgICBBU1NFUlQoIW1fY29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgbV9jb2RlQmxvY2tG
b3JDYWxsID0gYWRvcHRQdHIobmV3IEZ1bmN0aW9uQ29kZUJsb2NrKHRoaXMsIEZ1bmN0aW9uQ29k
ZSwgZ2xvYmFsT2JqZWN0LCBzb3VyY2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNl
dCgpLCBmYWxzZSkpOwotICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFk
b3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihib2R5LmdldCgpLCBzY29wZUNoYWluLCBtX2Nv
ZGVCbG9ja0ZvckNhbGwtPnN5bWJvbFRhYmxlKCksIG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKSkp
KTsKKyAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihuZXcg
Qnl0ZWNvZGVHZW5lcmF0b3IoYm9keS5nZXQoKSwgc2NvcGVDaGFpbk5vZGUsIG1fY29kZUJsb2Nr
Rm9yQ2FsbC0+c3ltYm9sVGFibGUoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSkpOwogICAg
IGlmICgoZXhjZXB0aW9uID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpKSkgewogICAgICAgICBtX2Nv
ZGVCbG9ja0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAg
LTI0MCwxMiArMjM3LDExIEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlCiAgICAgYm9keS0+Zmlu
aXNoUGFyc2luZyhtX3BhcmFtZXRlcnMsIG1fbmFtZSk7CiAgICAgcmVjb3JkUGFyc2UoYm9keS0+
ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5vKCks
IGJvZHktPmxhc3RMaW5lKCkpOwogCi0gICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKHNjb3BlQ2hh
aW5Ob2RlKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVDaGFpbi5n
bG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVD
aGFpbk5vZGUtPmdsb2JhbE9iamVjdC5nZXQoKTsKIAogICAgIEFTU0VSVCghbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOwogICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0ID0gYWRvcHRQdHIobmV3
IEZ1bmN0aW9uQ29kZUJsb2NrKHRoaXMsIEZ1bmN0aW9uQ29kZSwgZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNldCgpLCB0cnVlKSk7Ci0gICAgT3du
UHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2Vu
ZXJhdG9yKGJvZHkuZ2V0KCksIHNjb3BlQ2hhaW4sIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5z
eW1ib2xUYWJsZSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpKTsKKyAgICBPd25Q
dHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5l
cmF0b3IoYm9keS5nZXQoKSwgc2NvcGVDaGFpbk5vZGUsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
LT5zeW1ib2xUYWJsZSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpKTsKICAgICBp
ZiAoKGV4Y2VwdGlvbiA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKSkpIHsKICAgICAgICAgbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKaW5kZXggOTMzYjExZjk5YzRiNmIzZDRlZWU0MjgyOTVlY2Y2ZmUyZmZhMTVjZC4u
ZTY0MjU5NDg3OTEwM2RjNDg2ODNhZjY0MjQ2MDEwZGU1NDE1ZGY2NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAg
LTEwNiw4ICsxMDYsOCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaQogICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBleGNlcHRpb24pOwogICAgIH0KIAotICAgIFNjb3BlQ2hhaW4gc2Nv
cGVDaGFpbihnbG9iYWxPYmplY3QsICZnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGV4ZWMtPmds
b2JhbFRoaXNWYWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMs
IGZ1bmN0aW9uLCBzY29wZUNoYWluLm5vZGUoKSk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4gPSBuZXcgKGV4ZWMpIFNjb3BlQ2hhaW5Ob2RlKDAsIGdsb2JhbE9iamVjdCwgJmdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCkpOworICAgIHJldHVy
biBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24sIHNjb3BlQ2hhaW4pOwogfQog
CiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcAppbmRl
eCAxNWY2ZGU4ZDlkYjNkN2U3ZjY3NDU0YjYwNzMxMzFmZmFmMGU5NDIzLi5hOTQxY2ZhOTQyOGRi
OWUyNTc4ZWYyZWY4Yjk4ZTdjZGM1OWY3NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1
ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCAyOGNmZDBhZTQwMDZiY2Qx
MTE0NjdiNmUyMGJmMTRiNjFjM2JhZGNiLi4zOTkyNDE4NDg4OGQ4NWFmMzM3ZTFkNmQ5OGYxNmVm
ZjczN2UxMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVk
ZSAiTnVtZXJpY1N0cmluZ3MuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSA8
bmV3PiAvLyBmb3IgcGxhY2VtZW50IG5ldwogI2luY2x1ZGUgPHN0cmluZy5oPiAvLyBmb3Igc3Ry
bGVuCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKaW5kZXggMGI0ODYyM2EwNzVhZmFhY2Q4MjgyZGQwYWQxN2ZkNzQ2NmM0OGIw
OS4uZWFlMmMxYzBhOTM0ODZjOTIzMzc2ZmJlMmY0YmUzZjQ1YWY2MDA5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOworICAg
ICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NodW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2h1bmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNjRkZThiYjgxYTlmYTc0NWEyNWVmOTQ3NGJh
NDBjMWYwNDI2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NodW5rLmNwcApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ2h1bmsuaCIKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDaHVuay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDaHVuay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTJiYzc1ZmNmNjUxYTFmNGQ1ZWQxYjA3Nzk2
NmVmMzFmYWQyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NodW5rLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlND
aHVua19oCisjZGVmaW5lIEpTQ2h1bmtfaAorCisKKworI2VuZGlmIC8vIEpTQ2h1bmtfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyYmU2NWNj
N2I2OGM5ZmExYzEyYWJjMjc0ZWY2MjgxYjZkM2NlMTMwLi4yYWRlNDQxNWRjOGEyMzUzNDFmYTBi
Mjc5MjEyOGM1ODgwODYxODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcApAQCAtNTksNyArNTksNiBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3QKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSkKICAg
ICAsIG1fZXhlY3V0YWJsZShhZG9wdFJlZihuZXcgVlB0ckhhY2tFeGVjdXRhYmxlKCkpKQotICAg
ICwgbV9zY29wZUNoYWluKE5vU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiB9CkBAIC02Nyw3ICs2Niw3IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4gdGh1bmspCiAgICAgOiBC
YXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKHRodW5rKQot
ICAgICwgbV9zY29wZUNoYWluKGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQorICAg
ICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51
c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC03Nyw3ICs3
Niw3IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVu
Y3Rpb24oZnVuYykpCi0gICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCkpCisgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKQEAgLTg1LDkgKzg0LDkgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXMKIH0KIAogSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0
aW9uRXhlY3V0YWJsZT4gZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2Rl
KQotICAgIDogQmFzZShzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LCBzY29wZUNoYWluTm9k
ZS0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKQorICAgIDogQmFzZShzY29wZUNo
YWluTm9kZS0+Z2xvYmFsT2JqZWN0LmdldCgpLCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCi0g
ICAgLCBtX3Njb3BlQ2hhaW4oc2NvcGVDaGFpbk5vZGUpCisgICAgLCBtX3Njb3BlQ2hhaW4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBzY29wZUNoYWluTm9kZSkKIHsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5uYW1lKCk7CkBAIC0x
NTEsNyArMTUwLDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBt
YXJrU3RhY2spCiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAgICAgaWYgKCFp
c0hvc3RGdW5jdGlvbigpKSB7CiAgICAgICAgIGpzRXhlY3V0YWJsZSgpLT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7Ci0gICAgICAgIHNjb3BlKCkubWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwor
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3Njb3BlQ2hhaW4pOwogICAgIH0KIH0KIApAQCAt
MTYyLDcgKzE2MSw3IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKENhbGxEYXRh
JiBjYWxsRGF0YSkKICAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKICAgICB9CiAgICAgY2Fs
bERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0ganNFeGVjdXRhYmxlKCk7Ci0gICAgY2FsbERh
dGEuanMuc2NvcGVDaGFpbiA9IHNjb3BlKCkubm9kZSgpOworICAgIGNhbGxEYXRhLmpzLnNjb3Bl
Q2hhaW4gPSBzY29wZSgpOwogICAgIHJldHVybiBDYWxsVHlwZUpTOwogfQogCkBAIC0xOTYsNyAr
MTk1LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4KICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwog
CiAgICAgICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzY29wZSgpLmdsb2JhbE9iamVjdCgpLT5l
bXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5
T2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXMs
IERvbnRFbnVtKTsKICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKICAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVy
dHlOYW1lKTsKQEAgLTMyNiw3ICszMjUsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTRnVuY3Rpb246Omdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKICAgICBpZiAoaXNI
b3N0RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOwogICAgIGNv
bnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0ganNFeGVjdXRhYmxlKCk7Ci0gICAg
Y29uc3RydWN0RGF0YS5qcy5zY29wZUNoYWluID0gc2NvcGUoKS5ub2RlKCk7CisgICAgY29uc3Ry
dWN0RGF0YS5qcy5zY29wZUNoYWluID0gc2NvcGUoKTsKICAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUpTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggZWRjMGE4YTVjZDFlMWE3NGVlOTU2ODA0M2FiN2FlOGRiYzdmMmNkNi4uMDg5ZjQyZTJjMjNi
OTgxMTIyZTIyYzIyYTIwYjgzYzBmMDE2M2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNTMsMTUgKzUzLDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBj
b25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIAotICAgICAg
ICBTY29wZUNoYWluJiBzY29wZSgpCisgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9zY29wZUNoYWluOworICAgICAgICAgICAgcmV0dXJuIG1f
c2NvcGVDaGFpbi5nZXQoKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIHNldFNjb3BlKGNvbnN0
IFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4pCisgICAgICAgIHZvaWQgc2V0U2NvcGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAg
ICAgIG1fc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW47CisgICAgICAgICAgICBtX3Njb3BlQ2hhaW4u
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHNjb3BlQ2hhaW4pOwogICAgICAgICB9CiAKICAgICAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUu
Z2V0KCk7IH0KQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKIAogICAgICAgICBSZWZQdHI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsK
LSAgICAgICAgU2NvcGVDaGFpbiBtX3Njb3BlQ2hhaW47CisgICAgICAgIFdyaXRlQmFycmllcjxT
Y29wZUNoYWluTm9kZT4gbV9zY29wZUNoYWluOwogICAgIH07CiAKICAgICBKU0Z1bmN0aW9uKiBh
c0Z1bmN0aW9uKEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAKaW5kZXggNWU1M2YyNzhmMzNhOGQzMGNmYmI0NGY5YWMwMTBiYTdkZmEz
MTM4OS4uNDk3MGViMjRhMTcxM2U2MGJiNzM3NmY0NjJkYTY5YjJmNWIyYjg4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMzIsNiAr
MTMyLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFs
RGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWQKICAgICAsIHByb3BlcnR5TmFtZUl0ZXJh
dG9yU3RydWN0dXJlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZShqc051
bGwoKSkpCiAgICAgLCBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoR2V0dGVyU2V0dGVyOjpjcmVhdGVT
dHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgYXBpV3JhcHBlclN0cnVjdHVyZShKU0FQSVZhbHVl
V3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKKyAgICAsIHNjb3BlQ2hhaW5Ob2Rl
U3RydWN0dXJlKFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAg
ICwgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUoSlNDZWxsOjpjcmVhdGVEdW1teVN0cnVjdHVy
ZSgpKQogICAgICwgaWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQgPyB3
dGZUaHJlYWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmll
clRhYmxlKCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlz
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXgg
NGY3Y2ZkYzNkMWUzYmZmZjY1ODBjYWE2MTRmY2NkOTEzYWNiNDJkYS4uZjRmNzZjOTg3NmRhNTkz
OTk2MmIyNTRiODJjMzkzNjM0MzM0MzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7
CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclN0cnVjdHVyZTsKICAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gc2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlOwogCiAgICAgICAgIHN0YXRpYyB2b2lk
IHN0b3JlVlB0cnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA0NjRkMDVlOWE3MjQ0MGIwMGNmNDg5YmJhM2ZkNGUwZGNhODZj
YWE2Li40MGNlM2U1YmJjZGM1NDNkNTVlMTZmZTM3NTFhMGQ3YzJlMTUzNmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMTIs
OSArMTEyLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpc1ZhbHVl
KQogICAgIHN0cnVjdHVyZSgpLT5kaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCk7CiAK
ICAgICBkKCktPmdsb2JhbERhdGEgPSBIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCk7Ci0g
ICAgZCgpLT5nbG9iYWxTY29wZUNoYWluID0gU2NvcGVDaGFpbih0aGlzLCBkKCktPmdsb2JhbERh
dGEuZ2V0KCksIHRoaXMsIHRoaXNWYWx1ZSk7CisgICAgZCgpLT5nbG9iYWxTY29wZUNoYWluLnNl
dCgqZCgpLT5nbG9iYWxEYXRhLCB0aGlzLCBuZXcgKGQoKS0+Z2xvYmFsRGF0YS5nZXQoKSkgU2Nv
cGVDaGFpbk5vZGUoMCwgdGhpcywgZCgpLT5nbG9iYWxEYXRhLmdldCgpLCB0aGlzLCB0aGlzVmFs
dWUpKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCktPmluaXQoMCwgMCwgZCgp
LT5nbG9iYWxTY29wZUNoYWluLm5vZGUoKSwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsK
KyAgICBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAsIGQoKS0+Z2xvYmFs
U2NvcGVDaGFpbi5nZXQoKSwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsKIAogICAgIGQo
KS0+ZGVidWdnZXIgPSAwOwogCkBAIC0zMTksNiArMzE5LDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTVmFyaWFibGVP
YmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAgIAorICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssICZkKCktPmdsb2JhbFNjb3BlQ2hhaW4pOworCiAgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJmQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZkKCktPmVycm9yQ29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDc3YzQ3ZDUzMGJjM2U0Mzg0NmFmNjdj
NWZhZjk3Zjc4YTU1NzRjYTkuLmM1Njc1ZTYzMDBiNzIyMjZiMGIxMTQyOTBlY2UyY2FjOGYzZTgx
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICA6IEpT
VmFyaWFibGVPYmplY3REYXRhKCZzeW1ib2xUYWJsZSwgMCkKICAgICAgICAgICAgICAgICAsIGRl
c3RydWN0b3IoZGVzdHJ1Y3RvcikKICAgICAgICAgICAgICAgICAsIHJlZ2lzdGVyQXJyYXlTaXpl
KDApCi0gICAgICAgICAgICAgICAgLCBnbG9iYWxTY29wZUNoYWluKE5vU2NvcGVDaGFpbigpKQor
ICAgICAgICAgICAgICAgICwgZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAgICAgICAgICAgLCB3
ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgIH0KQEAgLTgzLDcgKzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
ICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgU2NvcGVD
aGFpbiBnbG9iYWxTY29wZUNoYWluOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hh
aW5Ob2RlPiBnbG9iYWxTY29wZUNoYWluOwogICAgICAgICAgICAgUmVnaXN0ZXIgZ2xvYmFsQ2Fs
bEZyYW1lW1JlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CiAKICAgICAgICAgICAg
IFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gcmVnRXhwQ29uc3RydWN0b3I7CkBAIC0y
MjgsNyArMjI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1Byb2ZpbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgICAgIFNjb3BlQ2hhaW4mIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJldHVybiBkKCktPmdsb2Jh
bFNjb3BlQ2hhaW47IH0KKyAgICAgICAgU2NvcGVDaGFpbk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4o
KSB7IHJldHVybiBkKCktPmdsb2JhbFNjb3BlQ2hhaW4uZ2V0KCk7IH0KIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAppbmRleCAwZGI0MTgyOTA3YzdlNDQ4ZDQ4ZGQ3NjgxZGE0MDlkZDY2YmRmOTJh
Li5kZTEzMDBhZDU0MjA5ZDkxMjE3OGI4N2ZiNDVjN2M2MzAzMzJjYmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCkBAIC00NTAsMTEgKzQ1MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShwYXJzZWRPYmplY3QpOwogCiAgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFs
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSk7Ci0g
ICAgSlNPYmplY3QqIGVycm9yID0gZXZhbC0+Y29tcGlsZShleGVjLCBzdGF0aWNfY2FzdDxKU0ds
b2JhbE9iamVjdCo+KHVud3JhcHBlZE9iamVjdCktPmdsb2JhbFNjb3BlQ2hhaW4oKS5ub2RlKCkp
OworICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZXhlYywgc3RhdGljX2Nhc3Q8
SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9iYWxTY29wZUNoYWluKCkpOwog
ICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBlcnJvcik7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1
dGUoZXZhbC5nZXQoKSwgZXhlYywgdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9iYWxTY29wZUNoYWluKCkubm9kZSgpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGV2YWwu
Z2V0KCksIGV4ZWMsIHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53
cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCmluZGV4IDZlNjMxMjJkNTk1MGUwZDU5
M2E1ZmFkMTI2Yjg5Y2JjNGM3M2RmMGIuLjY0ZGNiMDhmZmYyZjJlNWQ2MjU0NmY5NmY5ZDU4YzYz
MDgyMTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAt
MjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKIAogI2lmIFVTRShQVEhSRUFEUykKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U051bWJlckNlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJD
ZWxsLmNwcAppbmRleCA2ZmE2YjJhNDcxNDQ4ZmJhYWIyYjFkODNhYzRkOTk2YTc0NjIwOGM3Li4z
MTcyY2M5MzU1YTFkYmRiYjk0ZDczODk3NmI4M2JkZWQyNjgzMzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTnVtYmVyQ2VsbC5oIgorI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKIAogLy8gS2VlcCBvdXIgZXhwb3J0ZWQgc3ltYm9scyBsaXN0cyBo
YXBweS4KIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNab21iaWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNa
b21iaWUuY3BwCmluZGV4IDAyNmNmMzFlNDFjMTgzMDUxN2ZkMDBhNWZmNjYwY2ZmOWEzZTBlMWMu
LmMwYzVmMTE2MGIzYzVkNWY2ZDhlODFjNTBiYWI1OGVkOWE1ZTI0YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1pvbWJpZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5m
by5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKIAogI2lmIEVOQUJMRShKU0NfWk9NQklFUykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2suY3BwCmluZGV4
IGIzOGFjNGEwZjVmOWY0MGMyMDczM2RjMjVhYmE2NmM0NjhkYTdlNDEuLjQ4ZGRhNGM3ODcwZjU2
MTUxOGI5ZmYyMzM2MGRiNDM1MmZkNjNhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrZWRCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNYXJr
ZWRCbG9jay5oIgogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya2VkU3BhY2UuY3BwCmluZGV4IDM4OGEyYTg0MDgwNDA4NTMwYjZkOWQ3NjlkZDhiY2U2Y2Qw
Y2YxZGEuLmNiZTc5NjFhNGI3YTM2N2VhNTBjNDhiYzQ0ODU5MzdhM2QyY2U3MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHAKaW5kZXggYWZiNDFiZWNjMDMzYmJhNmYzNjAyNTBmNWQ1YmY2M2Y3MWM4NDgx
NS4uMzUxZWNjM2VmOWM0M2MyZjliMWQyNDRkNjMwZjY0Zjg2Yzk0MTU3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAt
MjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCiAKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCA4NTc5YTI5ODRiYzA2ODA3NGFmMDE3YzJj
Y2MxN2YyZmZjZTEyODlmLi40NjE1ZjlhMDYxYmQ2MWI5MjQ2NDUxZjM4MTY3ODg5MzA5YmM2YjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApAQCAt
MzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWZuZGVmIE5ERUJVRwogCi12b2lk
IFNjb3BlQ2hhaW5Ob2RlOjpwcmludCgpIGNvbnN0Cit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpwcmlu
dCgpCiB7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIHNjb3BlRW5kID0gZW5kKCk7CiAgICAgZm9y
IChTY29wZUNoYWluSXRlcmF0b3Igc2NvcGVJdGVyID0gYmVnaW4oKTsgc2NvcGVJdGVyICE9IHNj
b3BlRW5kOyArK3Njb3BlSXRlcikgewotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBv
ID0gKnNjb3BlSXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBzY29wZUl0ZXItPmdldCgpOwog
ICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpKTsKICAgICAgICAgby0+Z2V0UHJvcGVydHlOYW1lcyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lcyk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBwcm9wRW5kID0gcHJvcGVydHlOYW1lcy5lbmQoKTsKIAotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIi0tLS0tIFtzY29wZSAlcF0gLS0tLS1cbiIsIG8uZ2V0KCkpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tIFtzY29wZSAlcF0gLS0tLS1cbiIsIG8pOwogICAg
ICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBwcm9wSXRlciA9IHBy
b3BlcnR5TmFtZXMuYmVnaW4oKTsgcHJvcEl0ZXIgIT0gcHJvcEVuZDsgcHJvcEl0ZXIrKykgewog
ICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gKnByb3BJdGVyOwogICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIlcywgIiwgbmFtZS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC01
MSw3ICs1MSw3IEBAIHZvaWQgU2NvcGVDaGFpbk5vZGU6OnByaW50KCkgY29uc3QKIAogI2VuZGlm
CiAKLWludCBTY29wZUNoYWluOjpsb2NhbERlcHRoKCkgY29uc3QKK2ludCBTY29wZUNoYWluTm9k
ZTo6bG9jYWxEZXB0aCgpCiB7CiAgICAgaW50IHNjb3BlRGVwdGggPSAwOwogICAgIFNjb3BlQ2hh
aW5JdGVyYXRvciBpdGVyID0gdGhpcy0+YmVnaW4oKTsKQEAgLTY1LDQgKzY1LDEzIEBAIGludCBT
Y29wZUNoYWluOjpsb2NhbERlcHRoKCkgY29uc3QKICAgICByZXR1cm4gc2NvcGVEZXB0aDsKIH0K
IAordm9pZCBTY29wZUNoYWluTm9kZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNr
KQoreworICAgIGlmIChuZXh0KQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZuZXh0KTsKKyAg
ICBtYXJrU3RhY2suYXBwZW5kKCZvYmplY3QpOworICAgIG1hcmtTdGFjay5hcHBlbmQoJmdsb2Jh
bE9iamVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmZ2xvYmFsVGhpcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5o
CmluZGV4IDExZjM2OTI4NTkwMWY4OGFlYmE0OTA2YjlhZjQzYWFiZTE4YzU5MzQuLmZiZWNkMTE3
ZTBlN2NhY2QzNzc5YzY4ZDM3NTc1NTg4MWUzYTgxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgU2NvcGVD
aGFpbl9oCiAjZGVmaW5lIFNjb3BlQ2hhaW5faAogCi0jaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CisjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0zMiwxMDkgKzMyLDY3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgCi0g
ICAgY2xhc3MgU2NvcGVDaGFpbk5vZGUgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBjbGFzcyBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1Ymxp
YzoKICAgICAgICAgU2NvcGVDaGFpbk5vZGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCi0gICAgICAgICAgICA6IG5leHQobmV4dCkK
LSAgICAgICAgICAgICwgb2JqZWN0KG9iamVjdCkKKyAgICAgICAgICAgIDogSlNDZWxsKGdsb2Jh
bERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBnbG9i
YWxEYXRhKGdsb2JhbERhdGEpCi0gICAgICAgICAgICAsIGdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QpCi0gICAgICAgICAgICAsIGdsb2JhbFRoaXMoZ2xvYmFsVGhpcykKLSAgICAgICAgICAgICwg
cmVmQ291bnQoMSkKKyAgICAgICAgICAgICwgbmV4dCgqZ2xvYmFsRGF0YSwgdGhpcywgbmV4dCkK
KyAgICAgICAgICAgICwgb2JqZWN0KCpnbG9iYWxEYXRhLCB0aGlzLCBvYmplY3QpCisgICAgICAg
ICAgICAsIGdsb2JhbE9iamVjdCgqZ2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsT2JqZWN0KQorICAg
ICAgICAgICAgLCBnbG9iYWxUaGlzKCpnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxUaGlzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgfQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8g
RHVlIHRvIHRoZSBudW1iZXIgb2Ygc3VidGxlIGFuZCB0aW1pbmcgZGVwZW5kZW50IGJ1Z3MgdGhh
dCBoYXZlIG9jY3VycmVkIGR1ZQotICAgICAgICAvLyB0byBkZWxldGVkIGJ1dCBzdGlsbCAidmFs
aWQiIFNjb3BlQ2hhaW5Ob2RlcyB3ZSBub3cgZGVsaWJlcmF0ZWx5IGNsb2JiZXIgdGhlCi0gICAg
ICAgIC8vIGNvbnRlbnRzIGluIGRlYnVnIGJ1aWxkcy4KLSAgICAgICAgflNjb3BlQ2hhaW5Ob2Rl
KCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgICAgICBnbG9iYWxE
YXRhID0gMDsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IDA7Ci0gICAgICAgICAgICBnbG9i
YWxUaGlzID0gMDsKLSAgICAgICAgfQotI2VuZGlmCiAKLSAgICAgICAgU2NvcGVDaGFpbk5vZGUq
IG5leHQ7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG9iamVjdDsKICAgICAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0OwotICAgICAgICBKU09iamVjdCogZ2xvYmFsVGhpczsKLSAgICAgICAgaW50IHJlZkNv
dW50OwotCi0gICAgICAgIHZvaWQgZGVyZWYoKSB7IEFTU0VSVChyZWZDb3VudCk7IGlmICgtLXJl
ZkNvdW50ID09IDApIHsgcmVsZWFzZSgpO30gfQotICAgICAgICB2b2lkIHJlZigpIHsgQVNTRVJU
KHJlZkNvdW50KTsgKytyZWZDb3VudDsgfQotICAgICAgICB2b2lkIHJlbGVhc2UoKTsKLQotICAg
ICAgICAvLyBCZWZvcmUgY2FsbGluZyAicHVzaCIgb24gYSBiYXJlIFNjb3BlQ2hhaW5Ob2RlLCBh
IGNsaWVudCBzaG91bGQKLSAgICAgICAgLy8gbG9naWNhbGx5ICJjb3B5IiB0aGUgbm9kZS4gTGF0
ZXIsIHRoZSBjbGllbnQgY2FuICJkZXJlZiIgdGhlIGhlYWQKLSAgICAgICAgLy8gb2YgaXRzIGNo
YWluIG9mIFNjb3BlQ2hhaW5Ob2RlcyB0byByZWNsYWltIGFsbCB0aGUgbm9kZXMgaXQgYWRkZWQK
LSAgICAgICAgLy8gYWZ0ZXIgdGhlIGxvZ2ljYWwgY29weSwgbGVhdmluZyBub2RlcyBhZGRlZCBi
ZWZvcmUgdGhlIGxvZ2ljYWwgY29weQotICAgICAgICAvLyAobm9kZXMgc2hhcmVkIHdpdGggb3Ro
ZXIgY2xpZW50cykgdW50b3VjaGVkLgotICAgICAgICBTY29wZUNoYWluTm9kZSogY29weSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlZigpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgIH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hhaW5Ob2RlPiBuZXh0OworICAg
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3Q7CisgICAgICAgIFdyaXRlQmFycmllcjxKU09i
amVjdD4gZ2xvYmFsVGhpczsKIAogICAgICAgICBTY29wZUNoYWluTm9kZSogcHVzaChKU09iamVj
dCopOwogICAgICAgICBTY29wZUNoYWluTm9kZSogcG9wKCk7CiAKLSAgICAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQo
KSBjb25zdDsKKyAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGJlZ2luKCk7CisgICAgICAgIFNj
b3BlQ2hhaW5JdGVyYXRvciBlbmQoKTsKKworICAgICAgICBpbnQgbG9jYWxEZXB0aCgpOwogCiAj
aWZuZGVmIE5ERUJVRyAgICAgICAgCi0gICAgICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBwcmludCgpOwogI2VuZGlmCisgICAgICAgIAorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIG1h
cmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW47CiAgICAg
fTsKIAogICAgIGlubGluZSBTY29wZUNoYWluTm9kZSogU2NvcGVDaGFpbk5vZGU6OnB1c2goSlNP
YmplY3QqIG8pCiAgICAgewogICAgICAgICBBU1NFUlQobyk7Ci0gICAgICAgIHJldHVybiBuZXcg
U2NvcGVDaGFpbk5vZGUodGhpcywgbywgZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxU
aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgU2NvcGVDaGFpbk5vZGUodGhp
cywgbywgZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LmdldCgpLCBnbG9iYWxUaGlzLmdldCgpKTsK
ICAgICB9CiAKICAgICBpbmxpbmUgU2NvcGVDaGFpbk5vZGUqIFNjb3BlQ2hhaW5Ob2RlOjpwb3Ao
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBTY29wZUNoYWluTm9kZSog
cmVzdWx0ID0gbmV4dDsKLQotICAgICAgICBpZiAoLS1yZWZDb3VudCAhPSAwKQotICAgICAgICAg
ICAgKytyZXN1bHQtPnJlZkNvdW50OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWxldGUg
dGhpczsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGlubGluZSB2b2lk
IFNjb3BlQ2hhaW5Ob2RlOjpyZWxlYXNlKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gaXMgb25seSBjYWxsZWQgYnkgZGVyZWYoKSwKLSAgICAgICAgLy8gRGVyZWYgZW5zdXJlcyB0
aGVzZSBjb25kaXRpb25zIGFyZSB0cnVlLgotICAgICAgICBBU1NFUlQocmVmQ291bnQgPT0gMCk7
Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBuID0gdGhpczsKLSAgICAgICAgZG8gewotICAgICAg
ICAgICAgU2NvcGVDaGFpbk5vZGUqIG5leHQgPSBuLT5uZXh0OwotICAgICAgICAgICAgZGVsZXRl
IG47Ci0gICAgICAgICAgICBuID0gbmV4dDsKLSAgICAgICAgfSB3aGlsZSAobiAmJiAtLW4tPnJl
ZkNvdW50ID09IDApOworICAgICAgICByZXR1cm4gbmV4dC5nZXQoKTsKICAgICB9CiAKICAgICBj
bGFzcyBTY29wZUNoYWluSXRlcmF0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yKGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBub2RlKQorICAgICAgICBTY29wZUNoYWlu
SXRlcmF0b3IoU2NvcGVDaGFpbk5vZGUqIG5vZGUpCiAgICAgICAgICAgICA6IG1fbm9kZShub2Rl
KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0
PiBjb25zdCAmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+b2JqZWN0OyB9Ci0g
ICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IGNvbnN0ICogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CisgICAgICAgIFdyaXRlQmFycmllcjxKU09iamVj
dD4gY29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQor
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGNvbnN0ICogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CiAgICAgCi0gICAgICAgIFNjb3BlQ2hhaW5JdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsgbV9ub2RlID0gbV9ub2RlLT5uZXh0OyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBtX25vZGUgPSBt
X25vZGUtPm5leHQuZ2V0KCk7IHJldHVybiAqdGhpczsgfQogCiAgICAgICAgIC8vIHBvc3RmaXgg
KysgaW50ZW50aW9uYWxseSBvbWl0dGVkCiAKQEAgLTE0MiwxMDAgKzEwMCwzMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlQ2hhaW5JdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBtX25vZGU7CisgICAgICAg
IERlcHJlY2F0ZWRQdHI8U2NvcGVDaGFpbk5vZGU+IG1fbm9kZTsKICAgICB9OwogCi0gICAgaW5s
aW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBTY29wZUNoYWluTm9kZTo6YmVnaW4oKSBjb25zdAorICAg
IGlubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2NvcGVDaGFpbk5vZGU6OmJlZ2luKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBTY29wZUNoYWluSXRlcmF0b3IodGhpcyk7IAogICAgIH0KIAotICAg
IGlubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2NvcGVDaGFpbk5vZGU6OmVuZCgpIGNvbnN0Cisg
ICAgaW5saW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBTY29wZUNoYWluTm9kZTo6ZW5kKCkKICAgICB7
IAogICAgICAgICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9yKDApOyAKICAgICB9CiAKLSAgICBj
bGFzcyBOb1Njb3BlQ2hhaW4ge307Ci0KLSAgICBjbGFzcyBTY29wZUNoYWluIHsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjb3BlQ2hhaW4oTm9TY29w
ZUNoYWluKQotICAgICAgICAgICAgOiBtX25vZGUoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgU2NvcGVDaGFpbihKU09iamVjdCogbywgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKLSAg
ICAgICAgICAgIDogbV9ub2RlKG5ldyBTY29wZUNoYWluTm9kZSgwLCBvLCBnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBTY29wZUNoYWluKGNvbnN0IFNjb3BlQ2hhaW4mIGMpCi0gICAgICAgICAgICA6IG1fbm9kZShj
Lm1fbm9kZS0+Y29weSgpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBTY29wZUNo
YWluJiBvcGVyYXRvcj0oY29uc3QgU2NvcGVDaGFpbiYgYyk7Ci0KLSAgICAgICAgZXhwbGljaXQg
U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogbm9kZSkKLSAgICAgICAgICAgIDogbV9ub2RlKG5v
ZGUtPmNvcHkoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgflNjb3BlQ2hhaW4o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9ub2RlKQotICAgICAgICAgICAgICAgIG1f
bm9kZS0+ZGVyZWYoKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX25vZGUgPSAwOwot
I2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN3YXAoU2NvcGVDaGFpbiYpOwotCi0g
ICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0K
LSAgICAgICAgSlNPYmplY3QqIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+b2JqZWN0Lmdl
dCgpOyB9Ci0KLSAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlLT5iZWdpbigpOyB9Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX25vZGUtPmVuZCgpOyB9Ci0KLSAgICAgICAgdm9pZCBwdXNoKEpTT2Jq
ZWN0KiBvKSB7IG1fbm9kZSA9IG1fbm9kZS0+cHVzaChvKTsgfQotCi0gICAgICAgIHZvaWQgcG9w
KCkgeyBtX25vZGUgPSBtX25vZGUtPnBvcCgpOyB9Ci0gICAgICAgIHZvaWQgY2xlYXIoKSB7IG1f
bm9kZS0+ZGVyZWYoKTsgbV9ub2RlID0gMDsgfQotICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+Z2xvYmFsT2JqZWN0
OyB9Ci0KLSAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpIGNvbnN0OwotCi0g
ICAgICAgIC8vIENhdXRpb246IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgY29kZWJs
b2NrIHRoaXMgaXMgYmVpbmcgdXNlZAotICAgICAgICAvLyB3aXRoIG5lZWRzIGEgZnVsbCBzY29w
ZSBjaGFpbiwgb3RoZXJ3aXNlIHRoaXMgcmV0dXJucyB0aGUgZGVwdGggb2YKLSAgICAgICAgLy8g
dGhlIHByZWNlZWRpbmcgY2FsbCBmcmFtZQotICAgICAgICAvLwotICAgICAgICAvLyBSZXR1cm5z
IHRoZSBkZXB0aCBvZiB0aGUgY3VycmVudCBjYWxsIGZyYW1lJ3Mgc2NvcGUgY2hhaW4KLSAgICAg
ICAgaW50IGxvY2FsRGVwdGgoKSBjb25zdDsKLQotI2lmbmRlZiBOREVCVUcgICAgICAgIAotICAg
ICAgICB2b2lkIHByaW50KCkgY29uc3QgeyBtX25vZGUtPnByaW50KCk7IH0KLSNlbmRpZgotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG1fbm9kZTsKLSAgICB9OwotCi0g
ICAgaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6c3dhcChTY29wZUNoYWluJiBvKQorICAgIEFMV0FZ
U19JTkxJTkUgSlNHbG9iYWxEYXRhJiBFeGVjU3RhdGU6Omdsb2JhbERhdGEoKSBjb25zdAogICAg
IHsKLSAgICAgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IG1fbm9kZTsKLSAgICAgICAgbV9ub2Rl
ID0gby5tX25vZGU7Ci0gICAgICAgIG8ubV9ub2RlID0gdG1wOworICAgICAgICBBU1NFUlQoc2Nv
cGVDaGFpbigpLT5nbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuICpzY29wZUNoYWluKCktPmds
b2JhbERhdGE7CiAgICAgfQogCi0gICAgaW5saW5lIFNjb3BlQ2hhaW4mIFNjb3BlQ2hhaW46Om9w
ZXJhdG9yPShjb25zdCBTY29wZUNoYWluJiBjKQorICAgIEFMV0FZU19JTkxJTkUgSlNHbG9iYWxP
YmplY3QqIEV4ZWNTdGF0ZTo6bGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gc2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgfQorICAg
IAorICAgIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIEV4ZWNTdGF0ZTo6Z2xvYmFsVGhpc1ZhbHVl
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIFNjb3BlQ2hhaW4gdG1wKGMpOwotICAgICAgICBzd2Fw
KHRtcCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgcmV0dXJuIHNjb3BlQ2hhaW4o
KS0+Z2xvYmFsVGhpcy5nZXQoKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKaW5kZXggZmFhNDgy
NGNkZmNjZjdmMjI0ZGFiNjBjMzBiNDEzNGZjM2Q2ZjhmNy4uMzU3MDFmMTFkMDUzMzljYTA0YTJj
MTk0MzI3N2M3M2VlZjQ4ZGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbk1hcmsuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluTWFyay5oCkBAIC0yNSwxMiArMjUsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotICAgIGlubGluZSB2b2lkIFNjb3BlQ2hhaW46Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBt
YXJrU3RhY2spIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBuID0g
bV9ub2RlOyBuOyBuID0gbi0+bmV4dCkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm4t
Pm9iamVjdCk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFNjb3Bl
Q2hhaW5NYXJrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1h
dGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggODY0
MzRlMTFkYWQ3MzVkYWY4OTRjMTg5ZWQzNGJiY2I0NzI1ZWRhYy4uMDYyY2MxYjNiMjQ4NzI5YzJh
OTJlNjliNDVhZmMyNTYxOWQxZjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0
aC5jcHAKQEAgLTc2LDYgKzc2LDkgQEAKICNpbmNsdWRlICJBU0NJSUNUeXBlLmgiCiAjaW5jbHVk
ZSAiQ3VycmVudFRpbWUuaCIKICNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCisjaWYgVVNFKEpTQykK
KyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjZW5kaWYKICNpbmNsdWRlICJTdGRMaWJFeHRyYXMu
aCIKICNpbmNsdWRlICJTdHJpbmdFeHRyYXMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY4YjhjYzBjMGFk
ZDYxMTZjMTE0YzQ0YjE2ZDQzZTY0YjAwZDk3NTUuLjUyMmNhMWIwYzMzNjg4OTRhZmE4NjhkZDhi
Nzc3NTc1OGJiMmExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wMi0yOCAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2NvcGVDaGFpbk5vZGUgR0MgYWxsb2NhdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTI4Mwor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIGRlYWwgd2l0aCB0aGUgYWJzZW5jZSBvZiB0aGUg
U2NvcGVDaGFpbgorICAgICAgICBjbGFzcy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvU2NvcGVDaGFpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVsZW1lbnQ6OnB1
c2hFdmVudEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6c2NvcGVDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRDYWxsRnJh
bWU6OnNjb3BlVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXpl
SlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENh
bGxGcmFtZTo6c2NvcGVDaGFpbik6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlwdENh
bGxGcmFtZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAqIGJyaWRnZS9jL2Nf
cnVudGltZS5jcHA6CisgICAgICAgICogYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwOgorICAgICAg
ICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0
Q29ubmVjdGlvbk9iamVjdDo6ZXhlY3V0ZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3
Tm9uZS5jcHA6CisKIDIwMTEtMDItMjggIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY29wZUNoYWlu
LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Njb3BlQ2hhaW4u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNzdjZDY5NDFjYTY2MzFiNjEwNWMyZTYwNTk4ZDA5YmUwMDc2MTI2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9TY29wZUNoYWluLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1Njb3Bl
Q2hhaW5faAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY29wZUNoYWluX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TY29wZUNoYWluLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNDE5NDY1NzIxZjAxNGIw
MmRjMDdjMzU5NzQ2OTY3NGQ4NmE2NzAxOC4uMGQyYmY5NDllM2YxZGJjMTRjZGI3YzBkZTI2ZGJm
OTJkMzUyMWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAKQEAgLTMzLDE5ICszMywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgSlNIVE1MRWxlbWVudDo6cHVzaEV2ZW50
SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbiYgc2NvcGUpIGNvbnN0CitT
Y29wZUNoYWluTm9kZSogSlNIVE1MRWxlbWVudDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNT
dGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlKSBjb25zdAogewogICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gaW1wbCgpOwogCiAgICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBm
aXJzdCwgZmFsbCBiYWNrIHRvIHNlYXJjaGluZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFu
ZCBmb3JtLgotICAgIHNjb3BlLnB1c2goYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3Qo
KSwgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpKSkpOworICAgIHNjb3BlID0gc2NvcGUtPnB1c2go
YXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgZWxlbWVudC0+b3duZXJEb2N1bWVu
dCgpKSkpOwogCiAgICAgLy8gVGhlIGZvcm0gaXMgbmV4dCwgc2VhcmNoZWQgYmVmb3JlIHRoZSBk
b2N1bWVudCwgYnV0IGFmdGVyIHRoZSBlbGVtZW50IGl0c2VsZi4KICAgICBpZiAoSFRNTEZvcm1F
bGVtZW50KiBmb3JtID0gZWxlbWVudC0+Zm9ybSgpKQotICAgICAgICBzY29wZS5wdXNoKGFzT2Jq
ZWN0KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGZvcm0pKSk7CisgICAgICAgIHNjb3BlID0g
c2NvcGUtPnB1c2goYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgZm9ybSkpKTsK
IAogICAgIC8vIFRoZSBlbGVtZW50IGlzIG9uIHRvcCwgc2VhcmNoZWQgZmlyc3QuCi0gICAgc2Nv
cGUucHVzaChhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBlbGVtZW50KSkpOwor
ICAgIHJldHVybiBzY29wZS0+cHVzaChhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCBlbGVtZW50KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9t
LmNwcAppbmRleCA3YzAwYmQ0M2FjM2YxNDdkNWQwODI4ZGQyMDkyNTk1ODVlNTBmNTI4Li5lNDkz
NTA4MTg1M2YyNTE1MGVjYzhkZmM0ZDViYjBhM2FhMzA5MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghaW1wbCgpLT5zY29wZUNoYWlu
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluID0gaW1wbCgpLT5zY29wZUNoYWluKCk7CisgICAgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4gPSBpbXBsKCktPnNjb3BlQ2hhaW4oKTsKICAgICBTY29wZUNoYWluSXRlcmF0
b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVu
ZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOwogCkBAIC05NSwxMiArOTUsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGludCBpbmRleCA9IGV4ZWMtPmFyZ3VtZW50KDApLmFz
SW50MzIoKTsKIAotICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gaW1wbCgp
LT5zY29wZUNoYWluKCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBpbXBsKCkt
PnNjb3BlQ2hhaW4oKTsKICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gc2NvcGVDaGFpbi0+
ZW5kKCk7CiAKICAgICBib29sIGZvdW5kTG9jYWxTY29wZSA9IGZhbHNlOwogICAgIGZvciAoU2Nv
cGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7Ci0gICAgICAgIEpTQzo6RGVwcmVjYXRlZFB0cjxKU09iamVjdD4gc2NvcGUgPSAq
aXRlcjsKKyAgICAgICAgSlNPYmplY3QqIHNjb3BlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIGlm
IChzY29wZS0+aXNBY3RpdmF0aW9uT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmRM
b2NhbFNjb3BlKSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgYWN0aXZhdGlvbiBvYmplY3Qg
aXMgbG9jYWwgc2NvcGUsIGVhY2ggc3VjY2Vzc2l2ZSBhY3RpdmF0aW9uIG9iamVjdCBpcyBjbG9z
dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcAppbmRleCBlMTdhM2Q0Y2JiZWMxMzllMmIyM2I2OTM4NjE3NTBiODZkNmM5NTVkLi45
OGRiOTdhNmY0NTUwZTAyZGRhYmZlM2ZmOGQ1ZGE5ZTY5Mzk4ZjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTIwLDkg
KzEyMCw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjCiAKICAgICAgICAgLy8gQWRkIHRoZSBl
dmVudCdzIGhvbWUgZWxlbWVudCB0byB0aGUgc2NvcGUKICAgICAgICAgLy8gKGFuZCB0aGUgZG9j
dW1lbnQsIGFuZCB0aGUgZm9ybSAtIHNlZSBKU0hUTUxFbGVtZW50OjpldmVudEhhbmRsZXJTY29w
ZSkKLSAgICAgICAgU2NvcGVDaGFpbiBzY29wZSA9IGxpc3RlbmVyQXNGdW5jdGlvbi0+c2NvcGUo
KTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNOb2RlKj4od3JhcHBlcigpKS0+cHVzaEV2ZW50SGFu
ZGxlclNjb3BlKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAgbGlzdGVuZXJBc0Z1bmN0aW9uLT5zZXRT
Y29wZShzY29wZSk7CisgICAgICAgIGxpc3RlbmVyQXNGdW5jdGlvbi0+c2V0U2NvcGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBzdGF0aWNfY2FzdDxKU05vZGUqPih3cmFwcGVyKCkpLT5wdXNoRXZlbnRI
YW5kbGVyU2NvcGUoZXhlYywgbGlzdGVuZXJBc0Z1bmN0aW9uLT5zY29wZSgpKSk7CiAgICAgfQog
CiAgICAgLy8gU2luY2Ugd2Ugb25seSBwYXJzZSBvbmNlLCB0aGVyZSdzIG5vIG5lZWQgdG8ga2Vl
cCBkYXRhIHVzZWQgZm9yIHBhcnNpbmcgYXJvdW5kIGFueW1vcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDM0OWRjMTRi
NmFlMmZiNjNlNDQ5ZjZlMjc3NTU4MmNhY2IyY2JiNzEuLmZiMDEwMDBmOWZkZmI5OWM2NjlkOWE3
YjEyM2Y0YzQ3NTZlYTdmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIH07CiAKLSAgICBzdGF0aWMgSlNDOjpDb21wbGV0
aW9uIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlNjb3BlQ2hhaW4mIGNoYWlu
LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSkK
KyAgICBzdGF0aWMgSlNDOjpDb21wbGV0aW9uIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBjaGFpbiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRF
eGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0
ZShleGVjLCBjaGFpbiwgc291cmNlLCB0aGlzVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggOGQwMDQ0N2MwYmEzNTM4Y2EyOGFlMDFlYTZm
ZGE3MzZlNGUwYTlkZC4uMTdmNTdmNDYxYWUwMzEyODNjMWE2NTU3MDI5NGEzYTk2Y2I4OTFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xMTIs
OCArMTEyLDkgQEAgSlNWYWx1ZSBKU05vZGU6OmFwcGVuZENoaWxkKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKLXZvaWQgSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVy
U2NvcGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNO
b2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqIG5v
ZGUpIGNvbnN0CiB7CisgICAgcmV0dXJuIG5vZGU7CiB9CiAKIHZvaWQgSlNOb2RlOjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IGNlZDdkODVmYWFlOTViNzUyMGM3
ZjNhMTlkMDc2MmRlMzk4MmNjYjkuLjViYWZlZGE0MzA0Y2M4YWRmOTNiYjBmNzRiY2QyZWQxMDE0
ZmRiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEphdmFTY3JpcHRDYWxsRnJhbWUqIEphdmFT
Y3JpcHRDYWxsRnJhbWU6OmNhbGxlcigpCiAgICAgcmV0dXJuIG1fY2FsbGVyLmdldCgpOwogfQog
Ci1jb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNo
YWluKCkgY29uc3QKK0pTQzo6U2NvcGVDaGFpbk5vZGUqIEphdmFTY3JpcHRDYWxsRnJhbWU6OnNj
b3BlQ2hhaW4oKSBjb25zdAogewogICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9p
c1ZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlw
dENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5oCmluZGV4IGI2OTM5NjgxZGY1ZTc4YTRjMzk4ZjQ3ZmVmY2MyZjY5N2M0MTFmZmMuLmYz
YTExNGI5MGJlYWEwYTMzNGFmNWMwMzM3ZjVhZGVkZTNhMzA5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgIEpTQzo6
RGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgdHlwZSgpIGNvbnN0OwotICAgIGNvbnN0IEpTQzo6U2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25zdDsKKyAgICBKU0M6OlNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKCkgY29uc3Q7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1pY0ds
b2JhbE9iamVjdCgpIGNvbnN0OwogCiAgICAgSlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAyYzVlMTM5NjYwNWEzOWQ2Y2UxM2Q5M2E3MjBkNWE5YWI2YzZiMWM2Li5j
YjUxYzhhMjdkODEyZWUzNzM0ZDBkYjBkYzA0MTM2MzY1YjFhNWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzU4LDcg
Kzc1OCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgICMgQ3VzdG9tIHB1c2hF
dmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
U2NvcGVDaGFpbiYpIGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZpcnR1YWwgSlNDOjpTY29wZUNoYWluTm9kZSogcHVzaEV2ZW50SGFuZGxlclNj
b3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTY29wZUNoYWluTm9kZSopIGNvbnN0O1xuXG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVy
U2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwgZnVuY3Rpb25zCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2aXJ0dWFsIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpDYWxs
RGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
YWxsIn07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IGY0YWU1Y2FkZjMyZTFi
NzMyNjY5ODc5YzVmZGM1OTM3NzNiOTAyNDkuLmE4MDg5NDY1ODliMjlkMjk4ZWNhYjA5YjJhZTA0
MjI5NmI4YTU5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2luY2x1ZGUgImNfcnVudGltZS5oIgog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisjaW5jbHVkZSA8cnVudGltZS9TY29wZUNoYWlu
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19ydW50aW1lLmNwcAppbmRleCBlMDM4Y2Q0ZDgxMjUyNjQzZjM1M2M3ZWU2YWVkODcy
ZjlkMTU1YjNmLi5lMTUzNTUzNWZiYmUyMDU4YjYxYjExN2NlNGQ0MzE3YjUzNjY5ZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiY191dGlsaXR5LmgiCiAjaW5jbHVkZSAibnBy
dW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY29wZUNoYWluLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAKaW5kZXggYzUxMmVlNzA2OGU4YjBiY2I3ZmIwYzlm
N2RkOGVjYTAyZDhiZWViZC4uMTNjY2M3MTIxZjI4MDgyNzYxMmMzZWVhOGY3MTJmZmJjYWMxM2Uy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJpZGdlLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQogCisjaW5jbHVkZSA8cnVudGltZS9TY29w
ZUNoYWluLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwCmluZGV4IDdlZGVmZTRiMjdjNGFhYzVhYTI3NWE3YmYwZGM3ZTRkNDY3ODI4MGIuLjFkMWE1
YjA2Y2EwZjU0NjI3NmZjMDM0OGU0YTdlZjg1ZTJlNjkyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTE4MjYsNyArMTgyNiw3IEBAIHZvaWQgUXRDb25uZWN0
aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIFN0dWZmIGlu
IHRoZSBfX3F0X3NlbmRlciBwcm9wZXJ0eSwgaWYgd2UgY2FuCi0gICAgICAgICAgICAgICAgICAg
IFNjb3BlQ2hhaW4gb2xkc2MgPSBTY29wZUNoYWluKE5vU2NvcGVDaGFpbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG9sZHNjID0gMDsKICAgICAgICAgICAgICAgICAg
ICAgSlNGdW5jdGlvbiogZmltcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2Z1bmNP
YmplY3QtPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW1wID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KG1fZnVuY09iamVjdC5nZXQo
KSk7CkBAIC0xODM2LDkgKzE4MzYsNyBAQCB2b2lkIFF0Q29ubmVjdGlvbk9iamVjdDo6ZXhlY3V0
ZSh2b2lkICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cHV0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgIl9fcXRfc2VuZGVyX18iKSwgcXRfc2VuZGVyLCBzbG90KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9sZHNjID0gZmltcC0+c2NvcGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFNjb3BlQ2hhaW4gc2MgPSBvbGRzYzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjLnB1
c2god3JhcHBlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW1wLT5zZXRTY29wZShzYyk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmaW1wLT5zZXRTY29wZShvbGRzYy0+cHVzaCh3cmFw
cGVyKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlld05vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAK
aW5kZXggOWFlYWYzYjUxNWVmNDNjOGE1OGM4OTJkNTcxN2M1YTliYzQ5NzdkYy4uMmMwMWZkNTgw
MWYwNjZkZDZiZGY2ZDE1OTJmMjRmYTFjNmY4YzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3Tm9uZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShKU0MpCiAj
aW5jbHVkZSAiQnJpZGdlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NvcGVDaGFpbi5o
PgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMTYz
ZjY2OTk1YjQ2ZmIxM2RjNTA0ZjhjYjhhOTE5NTlkNWY0MjgxMC4uZDYwZDY4ZWMyYTFkMmFmZDBl
ZDk3OTE4NGQ0ZGNlOTExMjJiMGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDExLTAyLTI4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTY29wZUNoYWluTm9k
ZSBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU1MjgzCisKKyAgICAgICAgTW9yZSB1cGRhdGVzIGZvciB0aGUgYWJzZW5jZSBvZiB0
aGUgU2NvcGVDaGFpbiBjbGFzcworCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0Rl
bGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRDYWxsRnJhbWUgc2NvcGVDaGFpbl0pOgor
CiAyMDExLTAyLTI2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KaW5kZXggOTZhMWE0MjcxYzNk
NTNmZWIyM2NiOTVjZTgzOWNjN2NhNGVhYTQxYi4uMjcwMjY2YjcxNWJhYjg1NGJjMDliOTViMTZl
MmM2MzU0OGRhNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMTc2LDcgKzE3Niw3IEBAIE5TU3RyaW5nICogY29u
c3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1i
ZXIiOwogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIGNv
bnN0IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZy
YW1lLT5zY29wZUNoYWluKCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBfcHJp
dmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKICAgICBpZiAoIXNjb3BlQ2hh
aW4tPm5leHQpICAvLyBnbG9iYWwgZnJhbWUKICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpfcHJpdmF0ZS0+Z2xvYmFsT2JqZWN0XTsKIAo=
</data>
<flag name="review"
          id="76039"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>