<?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>194331</bug_id>
          
          <creation_ts>2019-02-06 00:50:36 -0800</creation_ts>
          <short_desc>[JSC] NativeExecutable should be smaller</short_desc>
          <delta_ts>2019-02-06 11:50:31 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1502715</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-06 00:50:36 -0800</bug_when>
    <thetext>I think it can be &lt;= 64. (Now, it takes 88).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502730</commentid>
    <comment_count>1</comment_count>
      <attachid>361283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-06 01:47:26 -0800</bug_when>
    <thetext>Created attachment 361283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502742</commentid>
    <comment_count>2</comment_count>
      <attachid>361283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-06 03:20:06 -0800</bug_when>
    <thetext>Comment on attachment 361283
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +           they are not touched from JIT, we can remove them from ExecutableBase and move them to ScriptExecutable.

Actually, these fields are meaningless even in ScriptExecutable. It is used as a flag. So I would like to shrink FunctionExecutable more in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503394</commentid>
    <comment_count>3</comment_count>
      <attachid>361283</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-02-06 11:22:46 -0800</bug_when>
    <thetext>Comment on attachment 361283
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503398</commentid>
    <comment_count>4</comment_count>
      <attachid>361283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-06 11:24:28 -0800</bug_when>
    <thetext>Comment on attachment 361283
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503406</commentid>
    <comment_count>5</comment_count>
      <attachid>361283</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-06 11:49:09 -0800</bug_when>
    <thetext>Comment on attachment 361283
Patch

Clearing flags on attachment: 361283

Committed r241037: &lt;https://trac.webkit.org/changeset/241037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503407</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-06 11:49:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503410</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-06 11:50:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/47858258&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361283</attachid>
            <date>2019-02-06 01:47:26 -0800</date>
            <delta_ts>2019-02-06 11:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194331-20190206014725.patch</filename>
            <type>text/plain</type>
            <size>47267</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjgzODlkMzhkOTgwZTg2ZDY3OTJmM2I4MTAzY2E5MDJhZDZmNWUyLi5kYmFmYTNkMTE0ZTkxODBj
Mjc0ZTNkZDRkZjcyMzk2NGM5NzBkNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxOS0wMi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE5hdGl2ZUV4ZWN1dGFibGUgc2hvdWxkIGJlIHNtYWxsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDMzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5hdGl2ZUV4ZWN1
dGFibGUgdGFrZXMgODggYnl0ZXMgbm93LiBTaW5jZSBvdXIgR0Mgcm91bmRzIHRoZSBzaXplIHdp
dGggMTYsIGl0IGFjdHVhbGx5IHRha2VzIDk2IGJ5dGVzIGluIElzb1N1YnNwYWNlcy4KKyAgICAg
ICAgU2luY2UgYSBsb3Qgb2YgTmF0aXZlRXhlY3V0YWJsZSBhcmUgYWxsb2NhdGVkLCB3ZSBhbHJl
YWR5IGhhcyB0d28gTWFya2VkQmxvY2tzIGV2ZW4ganVzdCBhZnRlciBKU0dsb2JhbE9iamVjdCBp
bml0aWFsaXphdGlvbi4KKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBzaXplb2YoTmF0aXZlRXhl
Y3V0YWJsZSkgNjQgYnl0ZXMsIHdoaWNoIGlzIDMyIGJ5dGVzIHNtYWxsZXIgdGhhbiA5NiBieXRl
cy4gTm93IG91ciBKU0dsb2JhbE9iamVjdCBpbml0aWFsaXphdGlvbgorICAgICAgICBvbmx5IHRh
a2VzIG9uZSBNYXJrZWRCbG9jayBmb3IgTmF0aXZlRXhlY3V0YWJsZS4KKworICAgICAgICBUbyBt
YWtlIE5hdGl2ZUV4ZWN1dGFibGUgc21hbGxlciwKKworICAgICAgICAxLiBtX251bVBhcmFtZXRl
cnNGb3JDYWxsIGFuZCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QgaW4gRXhlY3V0YWJsZUJh
c2UgYXJlIG9ubHkgbWVhbmluZ2Z1bCBpbiBTY3JpcHRFeGVjdXRhYmxlIHN1YmNsYXNzZXMuIFNp
bmNlCisgICAgICAgICAgIHRoZXkgYXJlIG5vdCB0b3VjaGVkIGZyb20gSklULCB3ZSBjYW4gcmVt
b3ZlIHRoZW0gZnJvbSBFeGVjdXRhYmxlQmFzZSBhbmQgbW92ZSB0aGVtIHRvIFNjcmlwdEV4ZWN1
dGFibGUuCisKKyAgICAgICAgMi4gRE9NSklUOjpTaWduYXR1cmUqIGlzIHJhcmVseSB1c2VkLiBS
YXRoZXIgdGhhbiBoYXZpbmcgaXQgaW4gTmF0aXZlRXhlY3V0YWJsZSwgd2Ugc2hvdWxkIHB1dCBp
dCBpbiBOYXRpdmVKSVRDb2RlLiBTaW5jZSBOYXRpdmVFeGVjdXRhYmxlCisgICAgICAgICAgIGFs
d2F5cyBoYXMgSklUQ29kZSwgd2UgY2FuIHNhZmVseSBxdWVyeSB0aGUgdmFsdWUgZnJvbSBOYXRp
dmVFeGVjdXRhYmxlLiBUaGlzIHBhdGNoIGNyZWF0ZXMgTmF0aXZlRE9NSklUQ29kZSwgd2hpY2gg
aXMgYSBzdWJjbGFzcyBvZgorICAgICAgICAgICBOYXRpdmVKSVRDb2RlLCBhbmQgaW5zdGFudGlh
dGVkIG9ubHkgd2hlbiBET01KSVQ6OlNpZ25hdHVyZSogaXMgZ2l2ZW4uCisKKyAgICAgICAgMy4g
TW92ZSBJbnRyaW5zaWMgdG8gYSBtZW1iZXIgb2YgU2NyaXB0RXhlY3V0YWJsZSBvciBKSVRDb2Rl
LiBTaW5jZSBKSVRDb2RlIGhhcyBzb21lIHBhZGRpbmdzIHRvIHB1dCB0aGluZ3MsIHdlIGNhbiBs
ZXZlcmFnZSB0aGlzIHRvIHB1dAorICAgICAgICAgICBJbnRyaW5zaWMgZm9yIE5hdGl2ZUV4ZWN1
dGFibGUuCisKKyAgICAgICAgV2UgYWxzbyBtb3ZlICJjbGVhckNvZGUiIGNvZGUgZnJvbSBFeGVj
dXRhYmxlQmFzZSB0byBTY3JpcHRFeGVjdXRhYmxlIHNpbmNlIGl0IGlzIG9ubHkgdmFsaWQgZm9y
IFNjcmlwdEV4ZWN1dGFibGUgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgICogaml0L0pJVENvZGUuY3BwOgorICAgICAgICAoSlND
OjpEaXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKToKKyAgICAgICAgKEpTQzo6TmF0aXZlSklU
Q29kZTo6TmF0aXZlSklUQ29kZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZURPTUpJVENvZGU6Ok5h
dGl2ZURPTUpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OnNpZ25hdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmludHJp
bnNpYyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHA6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVCYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZUJhc2U6Omhhc2hGb3IgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6
aGFzQ2xlYXJhYmxlQ29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjbGVhckNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZUJhc2UuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OkV4ZWN1dGFibGVCYXNlKToK
KyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aXNIb3N0RnVuY3Rpb24gY29uc3QpOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwgY29u
c3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvckNv
bnN0cnVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpnZW5lcmF0ZWRK
SVRDb2RlRm9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmdlbmVyYXRl
ZEpJVENvZGVGb3JDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6
OmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZk51bVBhcmFtZXRlcnNGb3IpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aGFzSklUQ29kZUZvckNhbGwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aGFzSklUQ29kZUZvckNvbnN0
cnVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppbnRy
aW5zaWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2VJ
bmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aW50cmluc2lj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Omhhc0pJVENvZGVGb3JDYWxs
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Omhhc0pJVENvZGVGb3JDb25z
dHJ1Y3QgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChK
U0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OnNpZ25hdHVyZUZvciBjb25zdCk6CisgICAgICAgIChKU0M6
Ok5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmNsZWFyQ29kZSk6CisgICAgICAgIChKU0M6
OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhl
Y3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmludHJpbnNp
YyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc0pJVENvZGVGb3JD
YWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aGFzSklUQ29kZUZv
ckNvbnN0cnVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpnZXRIb3N0RnVuY3Rpb24pOgorCiAyMDE5LTAyLTA1ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggREZHJ3MgZG9lc0dDKCkgZm9yIGEgZmV3IG1v
cmUgbm9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYmUwYzIxNDBl
OWI3MzY3MWYzMTJiOWU4MzU2ODE2MTU0MzA1MGRiNS4uMmNlZjkzNjY4YmFjOGRmZjk3ZTcwNTEw
MGY4NmFhNzM1YWQ1NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NzgyLDYgKzc4Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKICAgICBydW50aW1lL0V4Y2VwdGlv
blNjb3BlLmgKICAgICBydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKKyAgICBydW50aW1lL0V4ZWN1
dGFibGVCYXNlSW5saW5lcy5oCiAgICAgcnVudGltZS9GbG9hdDMyQXJyYXkuaAogICAgIHJ1bnRp
bWUvRmxvYXQ2NEFycmF5LmgKICAgICBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNTU2M2ZlM2MwODJlODNhNTAzYzBiZjllNjU5
NmMwNzM3ODVkMzdiLi5lY2MxN2QzNTJlODA1OWRhNzJhNjZlZjk2MjJjZTNhYzY3NjY0NjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc1OSw2ICsxNzU5LDcgQEAKIAkJRTM1
MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2
IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmls
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0
NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYz
NjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERP
TUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1QTBCOUQyMjBBRDg3QTAwQUM0NDc0IC8qIEV4ZWN1dGFi
bGVCYXNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1QTBCOUMyMjBBRDg3QTAwQUM0NDc0IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUNB
MTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRIZWFwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVD
QTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NjkyLDYgKzQ2OTMsNyBAQAogCQlFMzUw
NzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdHJ1Y3RBYmlsaXR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBE
T01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVCYXNlSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVDQTE0RjFEQkMzQTU2MDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTUxMURCQzNBNTYwMEY4MzUxNiAvKiBE
T01KSVRIZWFwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NSklUSGVhcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MzQs
NiArNjczNiw3IEBACiAJCQkJRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNj
b3BlLmggKi8sCiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNl
LmNwcCAqLywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2Uu
aCAqLywKKwkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxp
bmVzLmggKi8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5o
ICovLAogCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywK
IAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Ki8sCkBAIC04OTUwLDYgKzg5NTMsNyBAQAogCQkJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjZCNDRG
MEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUEwQjlEMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUzMUI3OTZFREQwMEY0QkY0QiAvKiBF
eGVjdXRhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXgg
YzBkMDZhNThlNTA3NjZkNGFhNTgxMDI4YjlmNzA0NmQxMTU0M2U5NS4uOGNlZGFlNjEyMDJhZDgy
M2Q0N2E1MzQ4MWRiYjY5MWY1YWRiZTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJFeGVjdXRhYmxlQmFzZUlubGluZXMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAppbmRleCAxN2Y0YTdmY2M5ZWFlMWYwMzAzYmI1YmY3MTEwZTY3MjcyMTE2MGZlLi4wNjIyMWZk
NjlkYmQ2YjYwZDQzYjliODBjMTQyNmU3Njk0ZDczYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRl
ICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlQmFzZUlubGluZXMuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlckNhbGxGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKaW5kZXgg
YmMyODE4MDJkYzIyZDI4N2YwYTRkNzMzNzBlZTA4MjM2Y2NmMzI3YS4uNzE0YWIyM2E0MzU1YWRi
MTI0MTVlNmJkN2ZhNTVlZWVjMzg1NWZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuY3BwCkBAIC0xNTksNiArMTU5LDE1IEBAIERpcmVjdEpJVENvZGU6OkRpcmVjdEpJVENvZGUo
SklUQ29kZTo6Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZWYsIEpJVENvZGU6OkNvZGVQCiAgICAg
QVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwogfQogCitEaXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRD
b2RlKEpJVENvZGU6OkNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmVmLCBKSVRDb2RlOjpDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlIGppdFR5cGUsIEludHJpbnNp
YyBpbnRyaW5zaWMpCisgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYocmVmLCBqaXRUeXBlKQorICAg
ICwgbV93aXRoQXJpdHlDaGVjayh3aXRoQXJpdHlDaGVjaykKK3sKKyAgICBtX2ludHJpbnNpYyA9
IGludHJpbnNpYzsKKyAgICBBU1NFUlQobV9yZWYpOworICAgIEFTU0VSVChtX3dpdGhBcml0eUNo
ZWNrKTsKK30KKwogRGlyZWN0SklUQ29kZTo6fkRpcmVjdEpJVENvZGUoKQogewogfQpAQCAtMTkx
LDkgKzIwMCwxMCBAQCBOYXRpdmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlw
ZSkKIHsKIH0KIAotTmF0aXZlSklUQ29kZTo6TmF0aXZlSklUQ29kZShDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHJlZiwgSklUVHlwZSBqaXRUeXBlKQorTmF0aXZlSklUQ29kZTo6TmF0aXZlSklUQ29k
ZShDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlZiwgSklUVHlwZSBqaXRUeXBlLCBJbnRyaW5zaWMg
aW50cmluc2ljKQogICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkKIHsKKyAg
ICBtX2ludHJpbnNpYyA9IGludHJpbnNpYzsKIH0KIAogTmF0aXZlSklUQ29kZTo6fk5hdGl2ZUpJ
VENvZGUoKQpAQCAtMjE5LDYgKzIyOSwxMiBAQCBKSVRDb2RlOjpDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IE5hdGl2ZUpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaQogICAg
IHJldHVybiBDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCk7CiB9CiAKK05hdGl2ZURPTUpJVENvZGU6
Ok5hdGl2ZURPTUpJVENvZGUoQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZWYsIEpJVFR5cGUgdHlw
ZSwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSkKKyAgICA6IE5hdGl2ZUpJVENvZGUocmVmLCB0eXBlLCBpbnRyaW5zaWMpCisgICAgLCBtX3Np
Z25hdHVyZShzaWduYXR1cmUpCit7Cit9CisKICNpZiBFTkFCTEUoSklUKQogUmVnaXN0ZXJTZXQg
SklUQ29kZTo6bGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNp
dGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKaW5kZXggZTcwNjQ3ZmZiNTdkMmZiY2FjZDA4MTNhZmMwZDFhOGRkYmNmMjg3OC4uODQ3
NGI5YTA3NjI0YzZmMDBmZGFlYzc1ZmRjZDViNDM3NjJiOWFkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgKQEAgLTQzLDYgKzQzLDkgQEAgbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBG
b3JPU1JFbnRyeUpJVENvZGU7CiBjbGFzcyBKSVRDb2RlOwogfQorbmFtZXNwYWNlIERPTUpJVCB7
CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIGNsYXNzIFRy
YWNrZWRSZWZlcmVuY2VzOwpAQCAtMTUyLDYgKzE1NSw4IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogICAgIHsKICAgICAgICAgcmV0dXJu
IGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOwog
ICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBKSVRDb2Rl
KEpJVFR5cGUpOwpAQCAtMTk4LDggKzIwMywxMiBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPENvZGVP
cmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgeyBVTlVTRURfUEFSQU0ocGMpOyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAjZW5kaWYKIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMo
KSB7IHJldHVybiBtX2ludHJpbnNpYzsgfQorCiBwcml2YXRlOgogICAgIEpJVFR5cGUgbV9qaXRU
eXBlOworcHJvdGVjdGVkOgorICAgIEludHJpbnNpYyBtX2ludHJpbnNpYyB7IE5vSW50cmluc2lj
IH07IC8vIEVmZmVjdGl2ZSBvbmx5IGluIE5hdGl2ZUV4ZWN1dGFibGUuCiB9OwogCiBjbGFzcyBK
SVRDb2RlV2l0aENvZGVSZWYgOiBwdWJsaWMgSklUQ29kZSB7CkBAIC0yMjQsNiArMjMzLDcgQEAg
Y2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewogcHVibGlj
OgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7CiAgICAgRGlyZWN0SklUQ29kZShDb2RlUmVm
PEpTRW50cnlQdHJUYWc+LCBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrLCBK
SVRUeXBlKTsKKyAgICBEaXJlY3RKSVRDb2RlKENvZGVSZWY8SlNFbnRyeVB0clRhZz4sIENvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gd2l0aEFyaXR5Q2hlY2ssIEpJVFR5cGUsIEludHJpbnNpYyk7IC8v
IEZvciBnZW5lcmF0ZWQgdGh1bmsuCiAgICAgdmlydHVhbCB+RGlyZWN0SklUQ29kZSgpOwogICAg
IAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiwgQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayk7CkBAIC0yMzcsNyArMjQ3LDcgQEAg
Y2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewogY2xhc3Mg
TmF0aXZlSklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewogcHVibGljOgogICAg
IE5hdGl2ZUpJVENvZGUoSklUVHlwZSk7Ci0gICAgTmF0aXZlSklUQ29kZShDb2RlUmVmPEpTRW50
cnlQdHJUYWc+LCBKSVRUeXBlKTsKKyAgICBOYXRpdmVKSVRDb2RlKENvZGVSZWY8SlNFbnRyeVB0
clRhZz4sIEpJVFR5cGUsIEludHJpbnNpYyk7CiAgICAgdmlydHVhbCB+TmF0aXZlSklUQ29kZSgp
OwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pik7CkBAIC0yNDUsNiArMjU1LDE3IEBAIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklU
Q29kZVdpdGhDb2RlUmVmIHsKICAgICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGFkZHJlc3NGb3JD
YWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKIH07CiAKK2NsYXNzIE5hdGl2ZURPTUpJVENv
ZGUgZmluYWwgOiBwdWJsaWMgTmF0aXZlSklUQ29kZSB7CitwdWJsaWM6CisgICAgTmF0aXZlRE9N
SklUQ29kZShDb2RlUmVmPEpTRW50cnlQdHJUYWc+LCBKSVRUeXBlLCBJbnRyaW5zaWMsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKik7CisgICAgdmlydHVhbCB+TmF0aXZlRE9NSklUQ29kZSgpID0g
ZGVmYXVsdDsKKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3NpZ25hdHVyZTsgfQorCitwcml2YXRlOgorICAgIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiBtX3NpZ25hdHVyZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IGU4YmFiZDI4NGU0Y2Y4M2U3ZmM3OGE1NmU2NmU1MzM0ZGQwMzM4ZjYu
LmE1OGU1ZDc0NGVkZGZiMTc3OGYxZDIyNzdmYWRjZmRmYjFiODk5NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZUJhc2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuY3BwCmluZGV4IDVmOGMwMmI5ZjAyNDAwZWQ5ZTA1YTZhNDBmNGVmNjg1ZTQ2
Yzc3NmUuLmUxNjA3YzYwYTIwZjI3NDFkMzFjMDI2NGEzMzRkZmUzZGIyYzExNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTEyNCwxMyArMTI0LDE1IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0CiAgICAgUmVmUHRyPEpJVENvZGU+IGZvckNhbGw7CiAgICAg
aWYgKGdlbmVyYXRvcikgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZW50cnkgPSBnZW5lcmF0b3Iodm0pLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7Ci0g
ICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShlbnRyeSwgZW50cnku
Y29kZSgpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZv
ckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDYWxsKHZt
KS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwor
ICAgICAgICBmb3JDYWxsID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoZW50cnksIGVudHJ5
LmNvZGUoKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljKSk7CisgICAgfSBlbHNl
IGlmIChzaWduYXR1cmUpCisgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlRE9N
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigp
KSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljLCBzaWduYXR1cmUpKTsKKyAgICBl
bHNlCisgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihj
dGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUQ29kZTo6SG9z
dENhbGxUaHVuaywgaW50cmluc2ljKSk7CiAgICAgCi0gICAgUmVmPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1
Y3Qodm0pLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCkpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CisgICAgUmVmPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZl
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qodm0pLnJldGFnZ2VkPEpTRW50cnlQdHJU
YWc+KCkpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rLCBOb0ludHJpbnNpYykpOwogICAgIAotICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoKnZtLCBmb3JDYWxsLnJlbGVhc2VOb25OdWxsKCksIGZ1bmN0aW9uLCBXVEZNb3ZlKGZv
ckNvbnN0cnVjdCksIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7Cisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6
OmNyZWF0ZSgqdm0sIGZvckNhbGwucmVsZWFzZU5vbk51bGwoKSwgZnVuY3Rpb24sIFdURk1vdmUo
Zm9yQ29uc3RydWN0KSwgY29uc3RydWN0b3IsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1
bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFt
ZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAg
IHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKaW5kZXggYWQ1NzJjNDZiODcyYzkwMzkwMGFmY2Q4ODczZDEzZDcyMjFiODc3MS4uZmJh
NzZkYTQ5MDM5NWUxYmE1OTY3ODJjZWNlZmYxZDVjZDlmNTk1OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiREZHU3BlY3Vs
YXRpdmVKSVQuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlQmFzZUlubGluZXMuaCIKICNp
bmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdWxsQ29kZU9yaWdpbi5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyYjNjN2NiMWUzMTRiZjg0YjVlZjg4ZjlhZTZkNDVi
NWFjYzQ5ZDg4Li5hOWE4NTUwN2QyMWYzN2QyM2ZmODJjNTYwMTY1NjRhOTEwZTJmYzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGVC
YXNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25XaGl0ZWxpc3QuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAppbmRleCBkZjQz
MTMwMTJkZDhiN2ZmNjI5Y2YwNmFkY2E4Yjc5NjhhZDI2ZjAzLi4yOTg5YjFkMDM5MjE1MjcxMTE1
OGJmMGExZTMwNTg3NDNmMjllYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCkBAIC00OSwxMDAgKzQ5LDE3IEBAIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PEV4ZWN1dGFi
bGVCYXNlKj4oY2VsbCktPkV4ZWN1dGFibGVCYXNlOjp+RXhlY3V0YWJsZUJhc2UoKTsKIH0KIAot
Ym9vbCBFeGVjdXRhYmxlQmFzZTo6aGFzQ2xlYXJhYmxlQ29kZSgpIGNvbnN0Ci17Ci0gICAgVk0m
IHZtID0gKnRoaXMtPnZtKCk7Ci0KLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChtX2ppdENvZGVG
b3JDYWxsCi0gICAgICAgIHx8IG1faml0Q29kZUZvckNvbnN0cnVjdAotICAgICAgICB8fCBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sKLSAgICAgICAgfHwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2spCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0KLSAgICBp
ZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZv
KCkpIHsKLSAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxv
Y2tGb3JDYWxsIHx8IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNz
SW5mbygpID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKLSAgICAgICAgYXV0byogZXhlY3V0
YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAg
IGlmIChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2spCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIH0gZWxzZSBp
ZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8o
KSkgewotICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgUHJvZ3Jh
bUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNv
ZGVCbG9jayB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFz
c0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7Ci0gICAgICAgIGF1
dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrCi0gICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jawotICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlKCkKLXsKLSNpZiBFTkFC
TEUoSklUKQotICAgIG1faml0Q29kZUZvckNhbGwgPSBudWxscHRyOwotICAgIG1faml0Q29kZUZv
ckNvbnN0cnVjdCA9IG51bGxwdHI7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4oKTsKLSNlbmRpZgotICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBOVU1fUEFS
QU1FVEVSU19OT1RfQ09NUElMRUQ7Ci0gICAgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0ID0g
TlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwotICAgIFZNJiB2bSA9ICp0aGlzLT52bSgpOwot
Ci0KLSAgICBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRh
YmxlOjppbmZvKCkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGV4ZWN1dGFi
bGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOwotICAgICAgICBleGVjdXRhYmxlLT5tX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IEV2YWxFeGVjdXRhYmxlOjppbmZv
KCkpIHsKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxF
dmFsRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxv
Y2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2su
Y2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoc3RydWN0dXJl
KHZtKS0+Y2xhc3NJbmZvKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewotICAgICAg
ICBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFByb2dyYW1FeGVj
dXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jay5j
bGVhcigpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5j
bGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHN0cnVjdHVyZSh2bSkt
PmNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKLSAgICAg
ICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVs
ZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9t
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgQVNTRVJUKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IE5hdGl2
ZUV4ZWN1dGFibGU6OmluZm8oKSk7Ci19Ci0KIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBWTSYgdm0gPSAqdGhpcy0+dm0oKTsKICAgICBF
eGVjdXRhYmxlQmFzZSogcmVhbFRoaXMgPSBjb25zdF9jYXN0PEV4ZWN1dGFibGVCYXNlKj4odGhp
cyk7CiAKLSAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBOYXRpdmVFeGVjdXRhYmxlOjppbmZvKCkp
IHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2UgTmF0aXZlRXhlY3V0YWJsZVR5cGU6
IHsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihyZWFsVGhpcyk7CiAgICAgICAgIG91dC5wcmludCgiTmF0aXZlRXhlY3V0YWJsZToi
LCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4obmF0aXZlLT5mdW5jdGlvbigpKSksICIv
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG5hdGl2ZS0+Y29uc3RydWN0b3IoKSkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvKHZtKSA9
PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6
IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUq
PihyZWFsVGhpcyk7CiAgICAgICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV2YWwtPmNv
ZGVCbG9jaygpKQogICAgICAgICAgICAgb3V0LnByaW50KCpjb2RlQmxvY2spOwpAQCAtMTUwLDgg
KzY3LDcgQEAgdm9pZCBFeGVjdXRhYmxlQmFzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICAgICAgb3V0LnByaW50KCJFdmFsRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaWYgKGNsYXNzSW5mbyh2bSkgPT0g
UHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVU
eXBlOiB7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBldmFsID0ganNDYXN0PFByb2dyYW1F
eGVjdXRhYmxlKj4ocmVhbFRoaXMpOwogICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBldmFsLT5jb2RlQmxvY2soKSkKICAgICAgICAgICAgIG91dC5wcmludCgqY29kZUJsb2NrKTsK
QEAgLTE1OSw4ICs3NSw3IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJvZ3JhbUV4ZWN1dGFibGUgdy9v
IENvZGVCbG9jayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaWYgKGNsYXNzSW5m
byh2bSkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgIGNhc2UgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRo
aXMpOwogICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2soKSkKICAgICAgICAgICAgIG91dC5wcmludCgqY29kZUJsb2NrKTsKQEAgLTE2OCwyMiAr
ODMsMjcgQEAgdm9pZCBFeGVjdXRhYmxlQmFzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29k
ZUJsb2NrIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7
Ci0gICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJsb2NrKCkpCi0gICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb25FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hKCIvIik7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+Y29kZUJs
b2NrRm9yQ2FsbCgpKQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqZnVuY3Rpb24tPmNv
ZGVCbG9ja0ZvckNhbGwoKSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+Y29kZUJsb2NrRm9yQ29u
c3RydWN0KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICpmdW5jdGlvbi0+Y29kZUJs
b2NrRm9yQ29uc3RydWN0KCkpOworICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTogewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KHJlYWxUaGlzKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJs
b2NrKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkZ1bmN0aW9uRXhlY3V0YWJsZSB3L28gQ29k
ZUJsb2NrIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1h
KCIvIik7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmNvZGVCbG9ja0ZvckNhbGwoKSkKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICpmdW5jdGlvbi0+Y29kZUJsb2NrRm9yQ2Fs
bCgpKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Y29kZUJsb2NrRm9yQ29uc3RydWN0KCkp
CisgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqZnVuY3Rpb24tPmNvZGVCbG9ja0Zv
ckNvbnN0cnVjdCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQog
CiBDb2RlQmxvY2tIYXNoIEV4ZWN1dGFibGVCYXNlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkgY29uc3QKIHsKLSAgICBpZiAodGhpcy0+Y2xhc3NJbmZvKCp0aGlzLT52bSgp
KSA9PSBOYXRpdmVFeGVjdXRhYmxlOjppbmZvKCkpCisgICAgaWYgKHR5cGUoKSA9PSBOYXRpdmVF
eGVjdXRhYmxlVHlwZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBOYXRpdmVFeGVjdXRh
YmxlKj4odGhpcyktPmhhc2hGb3Ioa2luZCk7CiAgICAgCiAgICAgcmV0dXJuIGpzQ2FzdDxjb25z
dCBTY3JpcHRFeGVjdXRhYmxlKj4odGhpcyktPmhhc2hGb3Ioa2luZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAppbmRleCA0YmE5ODk2MDcwOTM1
Y2Q0ZTQzNzhiNWZmMzM2ZWFmYWQwNTgyZGE3Li4zMzllMmQ0OGVmNjA2NTE2MTAyOThlN2VkZTk1
NTM3OTk0NTdkZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlQmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGVCYXNlLmgKQEAgLTYwLDE0ICs2MCw4IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QgPSAwOwot
ICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEID0gLTE7Ci0K
LSAgICBFeGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbnVt
UGFyYW1ldGVycywgSW50cmluc2ljIGludHJpbnNpYykKKyAgICBFeGVjdXRhYmxlQmFzZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEpTQ2VsbCh2bSwgc3RydWN0dXJl
KQotICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwobnVtUGFyYW1ldGVycykKLSAgICAg
ICAgLCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QobnVtUGFyYW1ldGVycykKLSAgICAgICAg
LCBtX2ludHJpbnNpYyhpbnRyaW5zaWMpCiAgICAgewogICAgIH0KIApAQCAtMTA1LDM5ICs5OSwy
OSBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAg
ICAgcmV0dXJuIHR5cGUoKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQot
Ci0KICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VCgobV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSA9PSAo
bV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0ID09IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpKTsK
LSAgICAgICAgcmV0dXJuIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNf
SVNfSE9TVDsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBOYXRpdmVFeGVjdXRhYmxlVHlwZTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ2VsbFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgfQogCi0gICAgYm9vbCBoYXNDbGVhcmFibGVDb2Rl
KCkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhckNvZGUoKTsKLQogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKLXByb3RlY3RlZDoKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbDsKLSAgICBp
bnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwotCiBwdWJsaWM6Ci0gICAgUmVmPEpJVENv
ZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0Q29kZUZv
ckNhbGwpOwogICAgICAgICByZXR1cm4gKm1faml0Q29kZUZvckNhbGw7CiAgICAgfQogCi0gICAg
UmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKQorICAgIFJlZjxKSVRD
b2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2ppdENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICByZXR1cm4gKm1faml0Q29k
ZUZvckNvbnN0cnVjdDsKICAgICB9CiAgICAgICAgIAotICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0
ZWRKSVRDb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBSZWY8SklUQ29k
ZT4gZ2VuZXJhdGVkSklUQ29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKICAgICAgICAgICAgIHJl
dHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwpAQCAtMTkwLDI0ICsxNzQsOSBAQCBjbGFz
cyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnNGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpCi0gICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFi
bGVCYXNlLCBtX251bVBhcmFtZXRlcnNGb3JDYWxsKTsKLSAgICAgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0
YWJsZUJhc2UsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCk7Ci0gICAgfQorICAgIGJvb2wg
aGFzSklUQ29kZUZvckNhbGwoKSBjb25zdDsKKyAgICBib29sIGhhc0pJVENvZGVGb3JDb25zdHJ1
Y3QoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzSklUQ29kZUZvckNhbGwoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPj0gMDsKLSAgICB9Ci0gICAg
ICAgIAotICAgIGJvb2wgaGFzSklUQ29kZUZvckNvbnN0cnVjdCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0ID49IDA7Ci0gICAgfQotICAg
ICAgICAKICAgICBib29sIGhhc0pJVENvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC0yMTcs
NyArMTg2LDcgQEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9
CiAKICAgICAvLyBJbnRyaW5zaWNzIGFyZSBvbmx5IGZvciBjYWxscywgY3VycmVudGx5LgotICAg
IEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpYzsgfQorICAg
IEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdDsKICAgICAgICAgCiAgICAgSW50cmluc2ljIGlu
dHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CiAgICAgewpAQCAt
MjMzLDcgKzIwMiw2IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNvbnN0cnVjdDsKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVjazsKLSAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGVCYXNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlkZTQ4YThjODE5M2Mz
NDg4NWNkZTk1ZWM4NzBkOTAyMzI5YzUyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlSW5saW5lcy5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBJbnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6OmludHJpbnNpYygpIGNvbnN0
Cit7CisgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29u
c3QgTmF0aXZlRXhlY3V0YWJsZSo+KHRoaXMpLT5pbnRyaW5zaWMoKTsKKyAgICByZXR1cm4ganND
YXN0PGNvbnN0IFNjcmlwdEV4ZWN1dGFibGUqPih0aGlzKS0+aW50cmluc2ljKCk7Cit9CisKK2lu
bGluZSBib29sIEV4ZWN1dGFibGVCYXNlOjpoYXNKSVRDb2RlRm9yQ2FsbCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBqc0Nhc3Q8Y29uc3QgU2NyaXB0RXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNKSVRDb2RlRm9yQ2Fs
bCgpOworfQorCitpbmxpbmUgYm9vbCBFeGVjdXRhYmxlQmFzZTo6aGFzSklUQ29kZUZvckNvbnN0
cnVjdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgU2NyaXB0RXhlY3V0YWJsZSo+KHRoaXMp
LT5oYXNKSVRDb2RlRm9yQ29uc3RydWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5k
ZXggZmY0OWVhZmI5MGY3MDUzZWE0NzE3MjZlZGM0NzZlZTZmZTUxMTAzMi4uMjlkNzI3ZTk1Mjc2
NDZhOTEyN2UyYmI1YWM1NzNlNWJlMzlkNGMwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAKKyNpbmNsdWRl
ICJFeGVjdXRhYmxlQmFzZUlubGluZXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDA1NGRmNzhkOGYyYjIwZWZj
Y2NlMGVjYTc3ZGZmZWI4NjI3Y2Y1Y2UuLjc4MGRhYmQ0YWUzNWIzMDA4Mzg3MzIyOTY0MWMwMmQy
N2ZjNTg5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAt
NDYsNiArNDYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpK
U1R5cGUgdHlwZSkKICAgICBDQVNFKEJpZ0ludFR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJT
ZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkKKyAgICBDQVNFKE5hdGl2
ZUV4ZWN1dGFibGVUeXBlKQogICAgIENBU0UoUHJvZ3JhbUV4ZWN1dGFibGVUeXBlKQogICAgIENB
U0UoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlKQogICAgIENBU0UoRXZhbEV4ZWN1dGFibGVU
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCAzOGFhZjUxYTA3
YWJkY2FhMGViNTI3YTZhZDQ2ZjhiNTY5OTZhMjEwLi5jNjJlYzZkZTQ4NmJkYTQyMGI0YTdlYzM2
NGIzMzE3OTNhNjVmYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApA
QCAtMzIsNiArMzIsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIEN1c3RvbUdldHRl
clNldHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwKIAorICAgIE5hdGl2ZUV4ZWN1
dGFibGVUeXBlLAorCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAogICAgIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlVHlwZSwKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCmluZGV4IDUxY2Zj
YzhmMzc5OTk0NTMzOWYxODdiYWU4MGY4YTNlMDU1MjAzNzguLjYzZGQyZWMzODBmY2Y5MTM5OTll
ODU3MTg0MDYxYmM2YzA3Mzg5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJO
YXRpdmVFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0YWJsZSkgfTsKIAotTmF0aXZlRXhl
Y3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZNJiB2bSwgUmVmPEpJVENvZGU+JiYg
Y2FsbFRodW5rLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUmVmPEpJVENvZGU+JiYg
Y29uc3RydWN0VGh1bmssIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBT
dHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUo
Vk0mIHZtLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgVGFnZ2VkTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlOwotICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwgZnVu
Y3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSk7CisgICAgZXhlY3V0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXAp
KSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgIGV4ZWN1
dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBXVEZNb3ZlKGNhbGxUaHVuayksIFdURk1vdmUoY29u
c3RydWN0VGh1bmspLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KQEAgLTU1LDcg
KzU1LDcgQEAgdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAog
U3RydWN0dXJlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogewotICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE5hdGl2ZUV4ZWN1dGFibGVUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIFJlZjxKSVRD
b2RlPiYmIGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC03MywxNCArNzMs
MjQgQEAgdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFJlZjxK
SVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVEMKICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgobV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2suZXhlY3V0YWJsZUFkZHJlc3MoKSwgSlNF
bnRyeVB0clRhZyk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0m
IHZtLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUpCi0gICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgdm0ubmF0aXZlRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCwgaW50cmluc2ljKQorTmF0
aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKKyAgICA6IEV4
ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpKQogICAg
ICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3Ip
Ci0gICAgLCBtX3NpZ25hdHVyZShzaWduYXR1cmUpCiB7CiB9CiAKK2NvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBOYXRpdmVFeGVjdXRhYmxlOjpzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKSBjb25zdAoreworICAgIEFTU0VSVChoYXNKSVRDb2RlRm9yKGtpbmQpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+c2lnbmF0dXJlKCk7Cit9CisKK0lu
dHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSBjb25zdAoreworICAgIHJldHVy
biBnZW5lcmF0ZWRKSVRDb2RlRm9yKENvZGVGb3JDYWxsKS0+aW50cmluc2ljKCk7Cit9CisKIENv
ZGVCbG9ja0hhc2ggTmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpIGNvbnN0CiB7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggOTFm
YjM1YmEwZWEzYzQzOGEyNDAwYzI0YTQ1OGU5YmJmYjk5Y2I0NC4uYjlhYjY1YWYwZmUyOGYyMGI2
ZjZkNDRmNDExM2NhYzNhYjZjNTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMjksOSArMjksNiBAQAogI2luY2x1ZGUgIkpT
Q1BvaXNvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLW5hbWVzcGFjZSBET01KSVQgewotY2xhc3Mg
U2lnbmF0dXJlOwotfQogCiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4
ZWN1dGFibGVCYXNlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtNDAsNyArMzcsNyBAQCBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAg
ICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOwogCi0gICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFJlZjxKSVRD
b2RlPiYmIGNhbGxUaHVuaywgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYmIGNv
bnN0cnVjdFRodW5rLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3Rh
dGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVu
aywgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5rLCBU
YWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgCkBAIC03NiwxNCArNzMsOSBA
QCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsK
ICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KLSAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KIAotICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKLSAgICAgICAgICAgIHJldHVybiBzaWduYXR1
cmUoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Cisg
ICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVENvZGU+
JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC05MiwxMSArODQsMTAg
QEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7
CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIHVzaW5nIFBvaXNvbmVkVGFn
Z2VkTmF0aXZlRnVuY3Rpb24gPSBQb2lzb25lZDxOYXRpdmVDb2RlUG9pc29uLCBUYWdnZWROYXRp
dmVGdW5jdGlvbj47CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKik7CisgICAgTmF0aXZlRXhlY3V0YWJsZShWTSYsIFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7CiAKICAgICBQ
b2lzb25lZFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgUG9pc29uZWRUYWdn
ZWROYXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9yOwotICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBtX3NpZ25hdHVyZTsKIAogICAgIFN0cmluZyBtX25hbWU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCAzMjUx
YTc5MDhmNjgxZWYxZDJhYWRlZjNlZjhkOWU3MjU1ZDliMzM5Li5iODgyYjk4YWZiMDU0OGQ3YmMy
OWU0YmViNTk2NGZhMDFhODA4NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDYsNyArNDYsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3Jp
cHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAogU2NyaXB0RXhlY3V0
YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBJbnRyaW5zaWMgaW50cmluc2ljKQot
ICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NP
TVBJTEVELCBpbnRyaW5zaWMpCisgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgICwgbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV9pbnRyaW5zaWMoaW50cmluc2ljKQogICAg
ICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX25ldmVySW5saW5l
KGZhbHNlKQpAQCAtNTYsNyArNTgsNiBAQCBTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRh
YmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZAogICAgICwg
bV9jYW5Vc2VPU1JFeGl0RnV6emluZyh0cnVlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiAgICAgLCBtX2V2YWxD
b250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXZhbENvbnRleHRUeXBlKSkKLSAgICAs
IG1fc291cmNlKHNvdXJjZSkKIHsKIH0KIApAQCAtNjcsNyArNjgsNDYgQEAgdm9pZCBTY3JpcHRF
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogdm9pZCBTY3JpcHRFeGVjdXRhYmxl
OjpjbGVhckNvZGUoSXNvQ2VsbFNldCYgY2xlYXJhYmxlQ29kZVNldCkKIHsKLSAgICBCYXNlOjpj
bGVhckNvZGUoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIG1faml0Q29kZUZvckNhbGwgPSBudWxs
cHRyOworICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IG51bGxwdHI7CisgICAgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+KCk7CisgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4oKTsKKyNlbmRpZgorICAgIG1fbnVtUGFyYW1l
dGVyc0ZvckNhbGwgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CisgICAgbV9udW1QYXJh
bWV0ZXJzRm9yQ29uc3RydWN0ID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOworCisgICAg
c3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6IHsKKyAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9y
Q2FsbC5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dC5jbGVhcigpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBFdmFsRXhlY3V0YWJs
ZVR5cGU6IHsKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2Rl
QmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2suY2xlYXIoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHJvZ3JhbUV4ZWN1
dGFibGVUeXBlOiB7CisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3Rh
dGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+
bV9wcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTogeworICAgICAgICBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4odGhpcyk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50
U3ltYm9sVGFibGUuY2xlYXIoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIEFTU0VSVCgmVk06OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkp
ID09ICZjbGVhcmFibGVDb2RlU2V0KTsKICAgICBjbGVhcmFibGVDb2RlU2V0LnJlbW92ZSh0aGlz
KTsKIH0KQEAgLTE1MCw3ICsxOTAsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgIH0K
IAogICAgIGF1dG8mIGNsZWFyYWJsZUNvZGVTZXQgPSBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigq
c3Vic3BhY2UoKSk7Ci0gICAgaWYgKGhhc0NsZWFyYWJsZUNvZGUoKSkKKyAgICBpZiAoaGFzQ2xl
YXJhYmxlQ29kZSh2bSkpCiAgICAgICAgIGNsZWFyYWJsZUNvZGVTZXQuYWRkKHRoaXMpOwogICAg
IGVsc2UKICAgICAgICAgY2xlYXJhYmxlQ29kZVNldC5yZW1vdmUodGhpcyk7CkBAIC0xNzYsNiAr
MjE2LDQxIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2Rl
QmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgdm0uaGVhcC53cml0ZUJhcnJp
ZXIodGhpcyk7CiB9CiAKK2Jvb2wgU2NyaXB0RXhlY3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZShW
TSYgdm0pIGNvbnN0Cit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAobV9qaXRDb2RlRm9yQ2Fs
bAorICAgICAgICB8fCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QKKyAgICAgICAgfHwgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrCisgICAgICAgIHx8IG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCisgICAgaWYgKHN0
cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSB7
CisgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBGdW5jdGlvbkV4
ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9y
Q2FsbCB8fCBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8o
KSA9PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxjb25zdCBFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB9IGVsc2UgaWYgKHN0
cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IFByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsK
KyAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFByb2dyYW1FeGVj
dXRhYmxlKj4odGhpcyk7CisgICAgICAgIGlmIChleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxv
Y2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZv
KCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBhdXRvKiBl
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0
aGlzKTsKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jawor
ICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sKKyAgICAgICAgICAgIHx8IGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAg
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTU2Nv
cGUqIHNjb3BlLCBKU09iamVjdComIGV4Y2VwdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCA1Yjg1MzkzOTEyYTUzNjg4
YWQyMDc1MWQ1MGZlNTAzN2I5ZDcwMjM4Li4xMTVmODgzOTdiN2NlNjQ1MzQ5ODVlZGY4NzQ2YzNm
NjExZjM2Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5oCkBAIC05Nyw2ICs5NywyMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIAogICAgIHZvaWQgY2xlYXJDb2RlKElzb0NlbGxTZXQm
KTsKIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faW50cmluc2ljOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IE5VTV9Q
QVJBTUVURVJTX05PVF9DT01QSUxFRCA9IC0xOworCisgICAgYm9vbCBoYXNKSVRDb2RlRm9yQ2Fs
bCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA+
PSAwOworICAgIH0KKyAgICBib29sIGhhc0pJVENvZGVGb3JDb25zdHJ1Y3QoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA+PSAwOworICAg
IH0KKwogICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIGFuIGludGVyZXN0aW5nIEdDIHN0b3J5LiBD
YWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIGFza2luZyB1cyB0byBjcmVhdGUgYSBDb2RlQmxv
Y2sKICAgICAvLyB0aGF0IGlzIG5vdCBqZXR0aXNvbmVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIHJl
dHVybnMuIENhbGxlcnMgYXJlIGVzc2VudGlhbGx5IGFza2luZyBmb3IgYSBzdHJvbmcgcmVmZXJl
bmNlCiAgICAgLy8gdG8gdGhlIENvZGVCbG9jay4gQmVjYXVzZSB0aGUgRXhlY3V0YWJsZSBtYXkg
YmUgYWxsb2NhdGluZyB0aGUgQ29kZUJsb2NrLCB3ZSByZXF1aXJlIGNhbGxlcnMgdG8gcGFzcyBp
bgpAQCAtMTEwLDYgKzEyNiw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhl
Y3V0YWJsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBKU09i
amVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSos
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomKTsKIAorICAgIGJvb2wgaGFzQ2xl
YXJhYmxlQ29kZShWTSYpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgU2NyaXB0RXhlY3V0YWJs
ZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBF
dmFsQ29udGV4dFR5cGUsIEludHJpbnNpYyk7CiAKQEAgLTEyMyw2ICsxNDEsMTUgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAjZW5kaWYKICAgICB9
CiAKKyAgICBTb3VyY2VDb2RlIG1fc291cmNlOworCisgICAgaW50IG1fbnVtUGFyYW1ldGVyc0Zv
ckNhbGwgeyBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQgfTsKKyAgICBpbnQgbV9udW1QYXJh
bWV0ZXJzRm9yQ29uc3RydWN0IHsgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEIH07CisKKyAg
ICBpbnQgbV9sYXN0TGluZSB7IC0xIH07CisgICAgdW5zaWduZWQgbV9lbmRDb2x1bW4geyBVSU5U
X01BWCB9OworCisgICAgSW50cmluc2ljIG1faW50cmluc2ljIHsgTm9JbnRyaW5zaWMgfTsKICAg
ICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9vcCB7IGZhbHNlIH07CiAgICAgQ29kZUZlYXR1cmVz
IG1fZmVhdHVyZXM7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKQEAgLTEz
MywxMCArMTYwLDYgQEAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxl
QmFzZSB7CiAgICAgYm9vbCBtX2NhblVzZU9TUkV4aXRGdXp6aW5nIDogMTsKICAgICB1bnNpZ25l
ZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7IC8vIERlcml2ZWRDb250ZXh0VHlwZQogICAgIHVu
c2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsgLy8gRXZhbENvbnRleHRUeXBlCi0KLSAgICBp
bnQgbV9sYXN0TGluZSB7IC0xIH07Ci0gICAgdW5zaWduZWQgbV9lbmRDb2x1bW4geyBVSU5UX01B
WCB9OwotICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0ZWY3YmFhYjVjNTFjODg1NGJh
OTVhMDg2MjdkZGJmOTY0YmJmMjVjLi43NjNiMGQ2Mjg1MGY4ZmUyZmU3NWUxODg0M2FhMGJlZGQz
ZGZjMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02OTksMTAgKzY5
OSwxMiBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOworICAgIFVOVVNFRF9QQVJBTShzaWdu
YXR1cmUpOworCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKLSAg
ICAgICAgYWRvcHRSZWYoKm5ldyBOYXRpdmVKSVRDb2RlKExMSW50OjpnZXRDb2RlUmVmPEpTRW50
cnlQdHJUYWc+KGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2Fs
bFRodW5rKSksIGZ1bmN0aW9uLAotICAgICAgICBhZG9wdFJlZigqbmV3IE5hdGl2ZUpJVENvZGUo
TExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90
cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpLCBjb25zdHJ1Y3RvciwKLSAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcg
TmF0aXZlSklUQ29kZShMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMp
KSwgZnVuY3Rpb24sCisgICAgICAgIGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShMTEludDo6
Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xp
bmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rLCBOb0ludHJpbnNpYykpLCBjb25zdHJ1Y3RvciwK
KyAgICAgICAgbmFtZSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBWTTo6Z2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>