<?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>141620</bug_id>
          
          <creation_ts>2015-02-15 08:27:50 -0800</creation_ts>
          <short_desc>Web Inspector: move WebCore agents to Inspector namespace</short_desc>
          <delta_ts>2026-01-12 09:04:37 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>141608</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jonowells</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069313</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-15 08:27:50 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069314</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-15 08:28:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/19840602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069359</commentid>
    <comment_count>2</comment_count>
      <attachid>246631</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-15 19:11:10 -0800</bug_when>
    <thetext>Created attachment 246631
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072741</commentid>
    <comment_count>3</comment_count>
      <attachid>246631</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-27 11:06:29 -0800</bug_when>
    <thetext>Comment on attachment 246631
Proposed Fix

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

Looks good. r=me

&gt; Source/WebCore/WebCore.exp.in:1642
&gt; +__ZN9Inspector9PageAgent7frameIdEPNS_5FrameE

I don&apos;t think this file exists anymore =).

&gt; Source/WebCore/inspector/InspectorCSSAgent.h:101
&gt; +    void didCreateNamedFlow(WebCore::Document&amp;, WebCore::WebKitNamedFlow&amp;);
&gt; +    void willRemoveNamedFlow(WebCore::Document&amp;, WebCore::WebKitNamedFlow&amp;);

Arg, this is why I was afraid of moving the agents to Inspector namespace. Hopefully there aren&apos;t too many WebCore::s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072787</commentid>
    <comment_count>4</comment_count>
      <attachid>247538</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-27 12:52:03 -0800</bug_when>
    <thetext>Created attachment 247538
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073032</commentid>
    <comment_count>5</comment_count>
      <attachid>246631</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-28 09:46:18 -0800</bug_when>
    <thetext>Comment on attachment 246631
Proposed Fix

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

&gt;&gt; Source/WebCore/WebCore.exp.in:1642
&gt;&gt; +__ZN9Inspector9PageAgent7frameIdEPNS_5FrameE
&gt; 
&gt; I don&apos;t think this file exists anymore =).

Yup, rebased patch has removed this chunk.

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.h:101
&gt;&gt; +    void willRemoveNamedFlow(WebCore::Document&amp;, WebCore::WebKitNamedFlow&amp;);
&gt; 
&gt; Arg, this is why I was afraid of moving the agents to Inspector namespace. Hopefully there aren&apos;t too many WebCore::s.

I only found the number of prefixes to be onerous in CSSAgent and DOMAgent due to the huge number of hooks. It&apos;s only for headers though, so I think it&apos;s worth it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246631</attachid>
            <date>2015-02-15 19:11:10 -0800</date>
            <delta_ts>2015-02-27 12:52:00 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-141620-20150215191106.patch</filename>
            <type>text/plain</type>
            <size>169838</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWEzOGRjYjI2MjNiZjg0
NjEyNjM0MWM0MzYzNGNhOTQ4YTFhYWQ0OS4uMTQ2MTFkZjJjZTYyYTI4ZjJiNjJlMzQxYjkzYjg5
YjdkMzU0MWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE1LTAyLTE1ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtb3ZlIFdlYkNvcmUgYWdlbnRzIHRvIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTYyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gbW92ZSBXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIgdG8gSW5zcGVjdG9yLiBEZWZlciBtb3Zpbmcgb3RoZXIKKyAgICAg
ICAgaGVscGVyIGNsYXNzZXMgdG8gYSBsYXRlciB0aW1lIHdoZW4gdGhvc2UgY2xhc3NlcyBhcmUg
bW9kZXJuaXplZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VyQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisKIDIwMTUtMDItMTQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndh
c2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBJbnNwZWN0b3Ig
cHJlZml4ZXMgZnJvbSBpbnNwZWN0b3IgYWdlbnQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXgg
NGM2ZWY3ODJjMTc3ZmUyYzg1YjI4YWRlYTVlNjRkYzczNjY5ZjljNS4uYzc1N2QxOTA5ZTFlNjJh
ZTBiNGZmZmM5OGExZGVjMTdlMjFjNzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudCBmaW5hbCA6IHB1
YmxpYyBBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmYyNDBi
ODljOGZjYTRlNTE2OGE5OTcxMmMyZjkxOWYxNTliZDgxNi4uMDJiYTFkM2Y0MGNmYzIzMzRlOGNi
OWU3OTQ0NzVjMzk4NmQ4OTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2MTQsNyArMTYx
NCw2IEBAIF9fWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19pbmZvRQogX19aTjdXZWJDb3JlOUpTRWxl
bWVudDl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTlMYXllclBvb2xDMUV2
CiBfX1pON1dlYkNvcmU5TGF5ZXJQb29sRDFFdgotX19aTjdXZWJDb3JlOVBhZ2VBZ2VudDdmcmFt
ZUlkRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMTBzZXRNYXhTaXplRWoKIF9f
Wk43V2ViQ29yZTlQYWdlQ2FjaGUxNHBydW5lVG9TaXplTm93RWpOU18xM1BydW5pbmdSZWFzb25F
CiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMzRtYXJrUGFnZXNGb3JWaXNpdGVkTGlua1N0eWxlUmVj
YWxjRXYKQEAgLTE2NDAsNiArMTYzOSw3IEBAIF9fWk43V2ViQ29yZTlmb250Q2FjaGVFdgogX19a
TjdXZWJDb3JlOW1ha2VSYW5nZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMyXwogX19aTjdXZWJD
b3JlOXBsYWluVGV4dEVQS05TXzVSYW5nZUV0YgogX19aTjdXZWJDb3JlOXVuaW9uUmVjdEVSS04z
V1RGNlZlY3RvcklOU185RmxvYXRSZWN0RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk45SW5zcGVjdG9yOVBhZ2VBZ2VudDdmcmFtZUlkRVBOU181RnJhbWVFCiBfX1pOSzNKU0M4Qmlu
ZGluZ3MxMFJvb3RPYmplY3QxMmdsb2JhbE9iamVjdEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVh
dGVDRlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTJuc0NyZWRlbnRpYWxFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhv
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQ
SUhvc3RDdXN0b20uY3BwCmluZGV4IDc0MTYyMmY0M2NjYTkzZTJjODNkMWEwMGNhZTlmMzlhZmJk
ODhlYzcuLjA2N2JmYmJlMTFlNzdmZWYzOTFiZTMzZWM5MzM1YWY2MGYwMTI2ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9z
dEN1c3RvbS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9z
dDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gc2NyaXB0VmFs
dWUuanNWYWx1ZSgpOwogfQogCi1zdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnRMaXN0ZW5l
ckluZm8mIGxpc3RlbmVySW5mbykKK3N0YXRpYyBKU0FycmF5KiBnZXRKU0xpc3RlbmVyRnVuY3Rp
b25zKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJbnNwZWN0b3I6
OkV2ZW50TGlzdGVuZXJJbmZvJiBsaXN0ZW5lckluZm8pCiB7CiAgICAgSlNBcnJheSogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKICAgICBzaXplX3QgaGFuZGxl
cnNDb3VudCA9IGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yLnNpemUoKTsKQEAgLTEx
Miw3ICsxMTIsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3Rl
bmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gbGlzdGVuZXJzQXJy
YXk7CisgICAgVmVjdG9yPEluc3BlY3Rvcjo6RXZlbnRMaXN0ZW5lckluZm8+IGxpc3RlbmVyc0Fy
cmF5OwogICAgIGltcGwoKS5nZXRFdmVudExpc3RlbmVyc0ltcGwobm9kZSwgbGlzdGVuZXJzQXJy
YXkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oCmluZGV4
IGNmMWIzYjg5NGE3YTA3MzQxZDg4OGFhNTIyYWQ5Zjg0OWQzYTQyODQuLjlkNmRhN2NmYmJiZGEw
NGRkZDQ5ZGExMDRhNWVjNTYwMDAyN2RlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKQEAgLTQyLDIyICs0MiwyMiBAQCBjbGFzcyBTY3JpcHRW
YWx1ZTsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBDb25zb2xlQWdlbnQ7CitjbGFz
cyBEYXRhYmFzZUFnZW50OworY2xhc3MgRE9NQWdlbnQ7CitjbGFzcyBET01TdG9yYWdlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIElu
c3BlY3RvclZhbHVlOworCitzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm87CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7Ci1jbGFzcyBEYXRhYmFzZUFnZW50OwotY2xh
c3MgRE9NQWdlbnQ7Ci1jbGFzcyBET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3Mg
U3RvcmFnZTsKIAotc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwotCiBjbGFzcyBDb21tYW5kTGlu
ZUFQSUhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDb21tYW5kTGluZUFQSUhvc3Q+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4gY3JlYXRlKCk7CkBAIC02NSw5
ICs2NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50KiBpbnNwZWN0b3JBZ2VudAogICAgICAgICAsIEluc3BlY3Rvcjo6Q29uc29sZUFnZW50KiBj
b25zb2xlQWdlbnQKLSAgICAgICAgLCBET01BZ2VudCogZG9tQWdlbnQKLSAgICAgICAgLCBET01T
dG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudAotICAgICAgICAsIERhdGFiYXNlQWdlbnQqIGRh
dGFiYXNlQWdlbnQKKyAgICAgICAgLCBJbnNwZWN0b3I6OkRPTUFnZW50KiBkb21BZ2VudAorICAg
ICAgICAsIEluc3BlY3Rvcjo6RE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQKKyAgICAg
ICAgLCBJbnNwZWN0b3I6OkRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQKICAgICAgICAgKQog
ICAgIHsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50OwpAQCAtOTMs
NyArOTMsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdGFibGVPYmplY3QqIGluc3BlY3RlZE9iamVj
dCh1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9pZCBpbnNwZWN0SW1wbChSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4mJiBvYmplY3RUb0luc3BlY3QsIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiYmIGhpbnRzKTsKIAotICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNJbXBs
KE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSk7CisgICAg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0ltcGwoTm9kZSosIFZlY3RvcjxJbnNwZWN0b3I6OkV2ZW50
TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkpOwogCiAgICAgU3RyaW5nIGRhdGFiYXNlSWRJ
bXBsKERhdGFiYXNlKik7CiAgICAgU3RyaW5nIHN0b3JhZ2VJZEltcGwoU3RvcmFnZSopOwpAQCAt
MTAzLDkgKzEwMyw5IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
KiBtX2luc3BlY3RvckFnZW50OwogICAgIEluc3BlY3Rvcjo6Q29uc29sZUFnZW50KiBtX2NvbnNv
bGVBZ2VudDsKLSAgICBET01BZ2VudCogbV9kb21BZ2VudDsKLSAgICBET01TdG9yYWdlQWdlbnQq
IG1fZG9tU3RvcmFnZUFnZW50OwotICAgIERhdGFiYXNlQWdlbnQqIG1fZGF0YWJhc2VBZ2VudDsK
KyAgICBJbnNwZWN0b3I6OkRPTUFnZW50KiBtX2RvbUFnZW50OworICAgIEluc3BlY3Rvcjo6RE9N
U3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKKyAgICBJbnNwZWN0b3I6OkRhdGFiYXNl
QWdlbnQqIG1fZGF0YWJhc2VBZ2VudDsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdGFibGVPYmplY3Q+PiBtX2luc3BlY3RlZE9iamVjdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RhYmxlT2JqZWN0PiBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKaW5kZXggODJjNjdkMjRlOTllMzlkZTU3N2Q4YTQyZWY5M2Q5MjBhMTBkMDg2
Ny4uZWNkZWM2MWVkNWUwOWM2M2UyMjRiYmZkODk0NjFjMDE4OGI3YmRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OkFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6IFdlYkFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKQEAg
LTUxLDExICs1MSwxMSBAQCBBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OkFwcGxpY2F0aW9uQ2FjaGVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQg
QXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC0xOTUsNCArMTk1LDQgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT4gQXBwbGljYXRpb24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5k
ZXggNTJhN2EzZTVhOWQzZDE3NTg3Y2I2ZWY4ZTBkODNmMTZiZmJmNWZjZi4uMWI4ZGY0ZGY0NGEw
Y2M5MDhmOTE5MmZkZTQzNWVlMWZjM2FkYzg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMzEs
MzIgKzMxLDMwIEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworfQorCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50czsKLWNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlQWdlbnQ7Ci1jbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgQXBwbGljYXRp
b25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgQXBw
bGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBQYWdlQWdlbnQqKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlQWdlbnQoV2ViQ29yZTo6SW5zdHJ1
bWVudGluZ0FnZW50cyosIFBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CisgICAgdm9pZCB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3Jr
U3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkBAIC02NSwxNSArNjMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBs
aWNhdGlvbkNhY2hlPiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNl
SW5mb0xpc3QmLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7Ci0gICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJj
ZUluZm9MaXN0Jik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwor
ICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlv
bkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmLCBjb25zdCBXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Vz
KGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7
CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
Y29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwogCi0g
ICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9yU3Ry
aW5nJiwgU3RyaW5nIGZyYW1lSWQpOworICAgIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBhc3Nl
cnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIFN0cmluZyBmcmFtZUlkKTsK
IAogICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3Bh
dGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNh
dGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYTRhZmI3NjExZDgxYWYyNzM2ODQx
OGRkYTlmNzdkNTU4NDAyNzk3Ni4uNmVhMjFkNjhmODQ5OGEzZDMxZjNiNWIwYWUxMjZmNTdiZmVk
YWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC02MCw5ICs2MCw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGVudW0gRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHsK
ICAgICBQc2V1ZG9DbGFzc05vbmUgPSAwLApAQCAtMzUxLDEzICszNTEsMTMgQEAgQ1NTQWdlbnQ6
On5DU1NBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBDU1NBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CiB9CiAKLXZvaWQgQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNTE0NmI4ZDNhYWUy
ZDM1MGJkZDY1MGM1NWY2ODhmOGZjZDNkYTEzYy4uYmE4NTIwZGEzZjc0YmM4OGU5NTM5NTUwYjAy
MjgxNThiNWE1YjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmgKQEAgLTM4LDQwICszOCwzNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1j
bGFzcyBDU1NGcm9udGVuZERpc3BhdGNoZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFzcyBDU1NSdWxlOwogY2xhc3MgQ1NT
UnVsZUxpc3Q7Ci1jbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTU3R5bGVSdWxl
OwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbjsKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIE5hbWVOb2RlTWFw
OwogY2xhc3MgTm9kZTsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNs
YXNzIFN0eWxlUnVsZTsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIENoYW5n
ZVJlZ2lvbk92ZXJzZXRUYXNrOworY2xhc3MgQ1NTRnJvbnRlbmREaXNwYXRjaGVyOwogCiBjbGFz
cyBDU1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIFdlYkFnZW50QmFzZQogICAgICwgcHVibGlj
IERPTUFnZW50OjpET01MaXN0ZW5lcgotICAgICwgcHVibGljIEluc3BlY3Rvcjo6Q1NTQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgLCBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldDo6TGlz
dGVuZXIgeworICAgICwgcHVibGljIENTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwg
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDU1NBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgY2xhc3MgSW5saW5lU3R5bGVPdmVycmlkZVNjb3BlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIElubGluZVN0eWxlT3ZlcnJpZGVTY29wZShTZWN1cml0eUNvbnRleHQqIGNv
bnRleHQpCisgICAgICAgIElubGluZVN0eWxlT3ZlcnJpZGVTY29wZShXZWJDb3JlOjpTZWN1cml0
eUNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgICAgICA6IG1fY29udGVudFNlY3VyaXR5UG9saWN5
KGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+c2V0T3ZlcnJpZGVBbGxvd0lubGluZVN0eWxlKHRy
dWUpOwpAQCAtODMsMzAgKzc5LDMwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eTsKKyAgICAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICB9OwogCi0gICAgQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyos
IERPTUFnZW50Kik7CisgICAgQ1NTQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyos
IERPTUFnZW50Kik7CiAgICAgdmlydHVhbCB+Q1NTQWdlbnQoKTsKIAotICAgIHN0YXRpYyBDU1NT
dHlsZVJ1bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6
Q1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShXZWJDb3JlOjpDU1NSdWxlJik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50
Tm9kZUlkKTsKKyAgICB2b2lkIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYkNvcmU6OldlYktpdE5h
bWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAg
Ly8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIG1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQm
LCBXZWJLaXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1l
bnQmLCBXZWJLaXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXQo
RG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250
ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9p
ZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXRO
YW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCk7Ci0gICAgYm9vbCBmb3JjZVBzZXVkb1N0
YXRlKEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB2b2lkIGRp
ZENyZWF0ZU5hbWVkRmxvdyhXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6OldlYktpdE5hbWVk
RmxvdyYpOworICAgIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhXZWJDb3JlOjpEb2N1bWVudCYs
IFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyYpOworICAgIHZvaWQgZGlkQ2hhbmdlUmVnaW9uT3Zl
cnNldChXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyYpOworICAg
IHZvaWQgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChXZWJDb3JlOjpEb2N1bWVu
dCYsIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyYsIFdlYkNvcmU6Ok5vZGUmIGNvbnRlbnRFbGVt
ZW50LCBXZWJDb3JlOjpOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQgPSBudWxscHRyKTsKKyAgICB2
b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChXZWJDb3JlOjpEb2N1bWVu
dCYsIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyYsIFdlYkNvcmU6Ok5vZGUmIGNvbnRlbnRFbGVt
ZW50KTsKKyAgICBib29sIGZvcmNlUHNldWRvU3RhdGUoV2ViQ29yZTo6RWxlbWVudCYsIFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5s
aW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CkBAIC0x
MjksNDIgKzEyNSw0MiBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNldFJ1bGVTZWxlY3RvckFjdGlv
bjsKICAgICBjbGFzcyBBZGRSdWxlQWN0aW9uOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+PiBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsK
LSAgICB0eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVTaGVldCosIFJlZlB0cjxJbnNwZWN0b3JTdHls
ZVNoZWV0Pj4gQ1NTU3R5bGVTaGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8Tm9kZSosIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+
PiBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OyAvLyBib2d1cyAic3R5bGVzaGVldHMiIHdpdGgg
ZWxlbWVudHMnIGlubGluZSBzdHlsZXMKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPERvY3Vt
ZW50PiwgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+PiBEb2N1bWVudFRvVmlhSW5zcGVjdG9y
U3R5bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3IiIHN0eWxlc2hlZXRzCisgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ+PiBJZFRv
SW5zcGVjdG9yU3R5bGVTaGVldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q1NTU3R5
bGVTaGVldCosIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Pj4gQ1NTU3R5bGVT
aGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6
Tm9kZSosIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+
PiBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OyAvLyBib2d1cyAic3R5bGVzaGVldHMiIHdpdGgg
ZWxlbWVudHMnIGlubGluZSBzdHlsZXMKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNv
cmU6OkRvY3VtZW50PiwgUmVmUHRyPFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ+PiBEb2N1
bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3IiIHN0eWxlc2hl
ZXRzCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgdW5zaWduZWQ+IE5vZGVJZFRvRm9yY2VkUHNl
dWRvU3RhdGU7CiAKICAgICB2b2lkIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKLSAgICBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVt
ZW50KiBlbGVtZW50KTsKLSAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkKTsKLSAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9j
dW1lbnQqKTsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPiopOwotCi0gICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYmluZFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCopOwotICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3Rv
clN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29sIGNyZWF0ZUlmQWJzZW50KTsKLSAgICBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4g
ZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3du
ZXJEb2N1bWVudCk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1l
bnQqKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWls
ZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRB
cnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+Jiwg
U3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCop
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVm
UHRyPE5vZGVMaXN0PiYmLCBpbnQgZG9jdW1lbnROb2RlSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJy
b3JTdHJpbmcmLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHls
ZVNoZWV0KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpOworICAgIFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOworICAgIGludCBkb2N1bWVu
dE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChXZWJDb3JlOjpEb2N1bWVudCopOworICAgIHZvaWQg
Y29sbGVjdFN0eWxlU2hlZXRzKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+Kik7CisKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5bGVTaGVl
dChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Kik7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldCogdmlhSW5zcGVjdG9yU3R5bGVTaGVldChXZWJDb3JlOjpEb2N1bWVudCosIGJvb2wgY3Jl
YXRlSWZBYnNlbnQpOworICAgIFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQqIGFzc2VydFN0
eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBkZXRlY3RPcmlnaW4oV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIFdlYkNvcmU6OkRvY3VtZW50KiBvd25lckRv
Y3VtZW50KTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+
IGJ1aWxkT2JqZWN0Rm9yUnVsZShXZWJDb3JlOjpTdHlsZVJ1bGUqLCBXZWJDb3JlOjpTdHlsZVJl
c29sdmVyJiwgV2ViQ29yZTo6RWxlbWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShXZWJDb3JlOjpDU1NTdHlsZVJ1
bGUqKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U3R5bGVSdWxlPj4mLCBXZWJDb3JlOjpTdHlsZVJl
c29sdmVyJiwgV2ViQ29yZTo6RWxlbWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShXZWJDb3Jl
OjpFbGVtZW50Kik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJZCk7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9i
amVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyYsIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyos
IGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAvLyBET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1w
bGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVu
dCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKFdlYkNvcmU6
Ok5vZGUqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihXZWJD
b3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CiAKICAgICAvLyBDU1NBZ2VudDo6TGlzdGVuZXIgaW1w
bGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVTaGVldENoYW5nZWQoSW5zcGVjdG9y
U3R5bGVTaGVldCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVNoZWV0Q2hhbmdl
ZChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJl
c2V0UHNldWRvU3RhdGVzKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDU1NG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OworICAgIFJlZlB0cjxDU1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBET01BZ2VudCogbV9kb21BZ2VudDsKIAogICAgIElkVG9JbnNwZWN0b3JTdHlsZVNoZWV0
IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CkBAIC0xNzgsNiArMTc0LDYgQEAgcHJpdmF0ZToK
ICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JDU1NBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggNzk2Mzk1MzVhNjBmZWY5ZWYxNjUxM2U3ZDIwNjZjZmZkNWQzMGI5My4u
NGNjZmRlN2YxZWIyN2UwNDBiZmQyYjgyNDg0OTZhZjY5YzcxZTg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00Myw5ICs0MywxNiBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOworY2xh
c3MgRE9NQWdlbnQ7CitjbGFzcyBET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgRnJvbnRlbmRDaGFu
bmVsOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFz
cyBQYWdlQWdlbnQ7CitjbGFzcyBQYWdlRGVidWdnZXJBZ2VudDsKK2NsYXNzIFJlc291cmNlQWdl
bnQ7CitjbGFzcyBUaW1lbGluZUFnZW50OworY2xhc3MgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OwogCiBuYW1lc3BhY2UgUHJvdG9jb2wgewogbmFtZXNwYWNlIE92ZXJsYXlUeXBlcyB7CkBAIC01
NSwyMyArNjIsMTUgQEAgY2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBET01BZ2VudDsK
LWNsYXNzIERPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
IGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsKLWNsYXNzIFBh
Z2VEZWJ1Z2dlckFnZW50OwotY2xhc3MgUmVzb3VyY2VBZ2VudDsKLWNsYXNzIFRpbWVsaW5lQWdl
bnQ7Ci1jbGFzcyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29udHJvbGxlcik7CkBAIC0xMjYs
NyArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JD
bGllbnQqIGluc3BlY3RvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50
OyB9Ci0gICAgUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2Vu
dDsgfQorICAgIEluc3BlY3Rvcjo6UGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VBZ2VudDsgfQogCiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVk
U2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0MSwxNiAr
MTQwLDE2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjsKIAogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yT3ZlcmxheT4gbV9vdmVybGF5OwogCiAgICAgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBET01BZ2VudCogbV9kb21B
Z2VudDsKLSAgICBSZXNvdXJjZUFnZW50KiBtX3Jlc291cmNlQWdlbnQ7Ci0gICAgUGFnZUFnZW50
KiBtX3BhZ2VBZ2VudDsKLSAgICBQYWdlRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50Owot
ICAgIERPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKLSAgICBUaW1lbGluZUFn
ZW50KiBtX3RpbWVsaW5lQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpET01BZ2VudCogbV9kb21BZ2Vu
dDsKKyAgICBJbnNwZWN0b3I6OlJlc291cmNlQWdlbnQqIG1fcmVzb3VyY2VBZ2VudDsKKyAgICBJ
bnNwZWN0b3I6OlBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpQYWdlRGVi
dWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OworICAgIEluc3BlY3Rvcjo6RE9NRGVidWdnZXJB
Z2VudCogbV9kb21EZWJ1Z2dlckFnZW50OworICAgIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCog
bV90aW1lbGluZUFnZW50OwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
IG1fZnJvbnRlbmRDaGFubmVsOwpAQCAtMTY4LDYgKzE2Nyw2IEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckNvbnRyb2xsZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IDcwMDQzZDU5NmRlNjQyNWY0MzU3MTI1ODQ0YmI2YjNkZjhi
ODE3YjcuLjhkNWM4YzM4NWZkYTZkZWM5ODQ3NTExZDUzYjg1ZGE2ZWQ2NzVkNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtOTQsOSAr
OTQsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIApAQCAtMjIxLDEwICsyMjEsMTAgQEAg
RE9NQWdlbnQ6On5ET01BZ2VudCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwog
fQogCi12b2lkIERPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIERPTUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9N
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRE9NQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBt
X2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAgICAgbV9k
b21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKTsK
QEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIERPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQwogICAgICAgICBmb2N1
c05vZGUoKTsKIH0KIAotdm9pZCBET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQordm9pZCBET01BZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpA
QCAtMjAxNiw0ICsyMDE2LDQgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgRE9NQWdlbnQ6Om5v
ZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSoKICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIHRvSlMoc3RhdGUsIGRlcHJlY2F0
ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBub2RlKSk7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5NGM2MmVlMDM1Mjk3M2NhYzVi
MGVjYTM5NGQ2NzBlMWFkZGM2MGQ1Li5kMDI4YzYzOTVhNGUzNTNjM2Q5ODFhMWUzMDhiYWE2MjQz
YTNjY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aApAQCAtNDksMTQgKzQ5LDggQEAgbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0
VmFsdWU7CiB9CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIEFjY2Vzc2liaWxpdHlP
YmplY3Q7Ci1jbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNz
IERPTUVkaXRvcjsKIGNsYXNzIERvY3VtZW50OwpAQCAtNjUsMzMgKzU5LDM1IEBAIGNsYXNzIEV2
ZW50OwogY2xhc3MgSW5zcGVjdG9ySGlzdG9yeTsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBj
bGFzcyBIaXRUZXN0UmVzdWx0OwotY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwotY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwotY2xhc3MgUGFnZUFn
ZW50OwotY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKIGNsYXNzIFNoYWRvd1Jv
b3Q7CiAKIHN0cnVjdCBIaWdobGlnaHRDb25maWc7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworY2xhc3MgUGFnZUFnZW50OworY2xhc3Mg
UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiB0eXBlZGVmIGludCBCYWNrZW5kTm9kZUlkOwogCiBzdHJ1Y3QgRXZlbnRMaXN0ZW5lcklu
Zm8gewotICAgIEV2ZW50TGlzdGVuZXJJbmZvKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVyVmVj
dG9yKQorICAgIEV2ZW50TGlzdGVuZXJJbmZvKFdlYkNvcmU6Ok5vZGUqIG5vZGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyVmVjdG9y
JiBldmVudExpc3RlbmVyVmVjdG9yKQogICAgICAgICA6IG5vZGUobm9kZSkKICAgICAgICAgLCBl
dmVudFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAsIGV2ZW50TGlzdGVuZXJWZWN0b3IoZXZlbnRM
aXN0ZW5lclZlY3RvcikKICAgICB7CiAgICAgfQogCi0gICAgTm9kZSogbm9kZTsKKyAgICBXZWJD
b3JlOjpOb2RlKiBub2RlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyBldmVudFR5cGU7Ci0gICAg
Y29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBldmVudExpc3RlbmVyVmVjdG9yOworICAgIGNvbnN0
IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAK
LWNsYXNzIERPTUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluc3Bl
Y3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERPTUFnZW50IGZpbmFs
IDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIERPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRE9NQWdlbnQpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTksMjAgKzk1LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+RE9NTGlzdGVuZXIoKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlbW92ZURvY3VtZW50KERvY3VtZW50KikgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlKikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVtb3ZlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKFdlYkNvcmU6Ok5vZGUqKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKFdlYkNvcmU6OkVsZW1lbnQqKSA9IDA7CiAg
ICAgfTsKIAotICAgIERPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlQWdlbnQqLCBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqKTsKKyAg
ICBET01BZ2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50KiwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheSopOwogICAgIHZp
cnR1YWwgfkRPTUFnZW50KCk7CiAKLSAgICBzdGF0aWMgU3RyaW5nIHRvRXJyb3JTdHJpbmcoY29u
c3QgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CiAKLSAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAv
LyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rp
b24uCkBAIC0xNTIsMTI3ICsxNDgsMTI3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWFy
a1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVy
c0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOworICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5l
cnMoV2ViQ29yZTo6Tm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVyc0Fy
cmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24gY2FsbGJhY2tzLgotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7Ci0g
ICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01B
dHRyKEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKTsKLSAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7Ci0gICAg
dm9pZCBkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
OwotICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEmKTsKLSAgICB2
b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSYpOwotICAgIHZvaWQgZGlkUHVzaFNoYWRv
d1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOwotICAgIHZvaWQgd2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOwotICAgIGJvb2wgaGFuZGxlVG91Y2hF
dmVudChOb2RlJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkKERvY3VtZW50Kik7Ci0gICAgdm9p
ZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSopOworICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShXZWJDb3JlOjpOb2RlJik7CisgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKFdlYkNvcmU6Ok5v
ZGUmKTsKKyAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsK
KyAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBkaWRS
ZW1vdmVET01BdHRyKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
OworICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEm
KTsKKyAgICB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoV2ViQ29yZTo6Tm9kZSYpOworICAg
IHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoV2ViQ29yZTo6RWxlbWVudCYgaG9zdCwgV2ViQ29yZTo6
U2hhZG93Um9vdCYpOworICAgIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoV2ViQ29yZTo6RWxlbWVu
dCYgaG9zdCwgV2ViQ29yZTo6U2hhZG93Um9vdCYpOworICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVu
dChXZWJDb3JlOjpOb2RlJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50Kik7CisgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChXZWJDb3JlOjpGcmFtZSopOwog
CiAgICAgLy8gQ2FsbGJhY2tzIHRoYXQgZG9uJ3QgZGlyZWN0bHkgY29ycmVzcG9uZCB0byBhbiBp
bnN0cnVtZW50YXRpb24gZW50cnkgcG9pbnQuCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVu
dCopOworICAgIHZvaWQgc2V0RG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsKICAgICB2b2lk
IHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAgdm9pZCBtYWluRnJhbWVET01Db250ZW50TG9h
ZGVkKCk7CiAKLSAgICB2b2lkIHN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgZWxlbWVudHMpOworICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRl
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudCo+JiBlbGVtZW50cyk7CiAKLSAgICBpbnQg
cHVzaE5vZGVUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBOb2Rl
Kik7Ci0gICAgTm9kZSogbm9kZUZvcklkKGludCBub2RlSWQpOwotICAgIGludCBib3VuZE5vZGVJ
ZChOb2RlKik7CisgICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyYsIGludCBk
b2N1bWVudE5vZGVJZCwgV2ViQ29yZTo6Tm9kZSopOworICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGVG
b3JJZChpbnQgbm9kZUlkKTsKKyAgICBpbnQgYm91bmROb2RlSWQoV2ViQ29yZTo6Tm9kZSopOwog
ICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKLSAgICBCYWNrZW5kTm9kZUlk
IGJhY2tlbmROb2RlSWRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG5vZGVHcm91cCk7Cisg
ICAgQmFja2VuZE5vZGVJZCBiYWNrZW5kTm9kZUlkRm9yTm9kZShXZWJDb3JlOjpOb2RlKiwgY29u
c3QgU3RyaW5nJiBub2RlR3JvdXApOwogCi0gICAgc3RhdGljIFN0cmluZyBkb2N1bWVudFVSTFN0
cmluZyhEb2N1bWVudCopOworICAgIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmcoV2Vi
Q29yZTo6RG9jdW1lbnQqKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHJlc29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiByZXNvbHZlTm9kZShXZWJDb3JlOjpOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzKCk7Ci0gICAgdm9pZCBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cyk7Ci0gICAgdm9pZCBpbnNwZWN0KE5vZGUqKTsKKyAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZs
YWdzKTsKKyAgICB2b2lkIGluc3BlY3QoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZvaWQgZm9jdXNO
b2RlKCk7CiAKLSAgICBJbnNwZWN0b3JIaXN0b3J5KiBoaXN0b3J5KCkgeyByZXR1cm4gbV9oaXN0
b3J5LmdldCgpOyB9CisgICAgV2ViQ29yZTo6SW5zcGVjdG9ySGlzdG9yeSogaGlzdG9yeSgpIHsg
cmV0dXJuIG1faGlzdG9yeS5nZXQoKTsgfQogCiAgICAgLy8gV2UgcmVwcmVzZW50IGVtYmVkZGVk
IGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBzYW1lIGhpZXJhcmNoeS4gSGVuY2Ugd2UgdHJlYXQgY2hp
bGRyZW4gb2YgZnJhbWUgb3duZXJzIGRpZmZlcmVudGx5LgogICAgIC8vIFdlIGFsc28gc2tpcCB3
aGl0ZXNwYWNlIHRleHQgbm9kZXMgY29uZGl0aW9uYWxseS4gRm9sbG93aW5nIG1ldGhvZHMgZW5j
YXBzdWxhdGUgdGhlc2Ugc3BlY2lmaWNzLgotICAgIHN0YXRpYyBOb2RlKiBpbm5lckZpcnN0Q2hp
bGQoTm9kZSopOwotICAgIHN0YXRpYyBOb2RlKiBpbm5lck5leHRTaWJsaW5nKE5vZGUqKTsKLSAg
ICBzdGF0aWMgTm9kZSogaW5uZXJQcmV2aW91c1NpYmxpbmcoTm9kZSopOwotICAgIHN0YXRpYyB1
bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNvdW50KE5vZGUqKTsKLSAgICBzdGF0aWMgTm9kZSogaW5u
ZXJQYXJlbnROb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMgYm9vbCBpc1doaXRlc3BhY2UoTm9kZSop
OworICAgIHN0YXRpYyBXZWJDb3JlOjpOb2RlKiBpbm5lckZpcnN0Q2hpbGQoV2ViQ29yZTo6Tm9k
ZSopOworICAgIHN0YXRpYyBXZWJDb3JlOjpOb2RlKiBpbm5lck5leHRTaWJsaW5nKFdlYkNvcmU6
Ok5vZGUqKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Tm9kZSogaW5uZXJQcmV2aW91c1NpYmxpbmco
V2ViQ29yZTo6Tm9kZSopOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNvdW50
KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Tm9kZSogaW5uZXJQYXJlbnRO
b2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1doaXRlc3BhY2UoV2ViQ29y
ZTo6Tm9kZSopOwogCi0gICAgTm9kZSogYXNzZXJ0Tm9kZShFcnJvclN0cmluZyYsIGludCBub2Rl
SWQpOwotICAgIEVsZW1lbnQqIGFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KTsKLSAgICBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KTsKKyAgICBXZWJDb3JlOjpOb2RlKiBhc3NlcnROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCk7CisgICAgV2ViQ29yZTo6RWxlbWVudCogYXNzZXJ0RWxlbWVudChFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQpOworICAgIFdlYkNvcmU6OkRvY3VtZW50KiBhc3NlcnREb2N1bWVudChFcnJvclN0
cmluZyYsIGludCBub2RlSWQpOwogCi0gICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2Rl
KERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKTsKLSAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CisgICAgc3Rh
dGljIFdlYkNvcmU6Ok5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBXZWJDb3JlOjpOb2RlKik7CiAKICAgICAvLyBNZXRob2RzIGNh
bGxlZCBmcm9tIG90aGVyIGFnZW50cy4KICAgICBQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIHsgcmV0
dXJuIG1fcGFnZUFnZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JO
b2RlKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmln
PiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nJiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9p
ZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0
b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJv
clN0cmluZyYsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKIAog
ICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
Tm9kZT4sIGludD4gTm9kZVRvSWRNYXA7Ci0gICAgaW50IGJpbmQoTm9kZSosIE5vZGVUb0lkTWFw
Kik7Ci0gICAgdm9pZCB1bmJpbmQoTm9kZSosIE5vZGVUb0lkTWFwKik7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKKyAgICBpbnQg
YmluZChXZWJDb3JlOjpOb2RlKiwgTm9kZVRvSWRNYXAqKTsKKyAgICB2b2lkIHVuYmluZChXZWJD
b3JlOjpOb2RlKiwgTm9kZVRvSWRNYXAqKTsKIAotICAgIE5vZGUqIGFzc2VydEVkaXRhYmxlTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwotICAgIEVsZW1lbnQqIGFzc2VydEVkaXRhYmxl
RWxlbWVudChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOworICAgIFdlYkNvcmU6Ok5vZGUqIGFz
c2VydEVkaXRhYmxlTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQpOworICAgIFdlYkNvcmU6
OkVsZW1lbnQqIGFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyYsIGludCBub2RlSWQp
OwogCi0gICAgaW50IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOworICAgIGludCBwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIHB1c2hDaGlsZE5v
ZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGggPSAxKTsKIAotICAgIGJvb2wgaGFz
QnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwotICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKKyAgICBi
b29sIGhhc0JyZWFrcG9pbnQoV2ViQ29yZTo6Tm9kZSosIGludCB0eXBlKTsKKyAgICB2b2lkIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhXZWJDb3JlOjpOb2RlKiByb290LCB1aW50MzJfdCByb290
TWFzaywgYm9vbCB2YWx1ZSk7CiAKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsK
LSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYnVpbGRBcnJheUZv
ckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCog
bm9kZXNNYXApOwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVu
ZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cElkKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcyhOb2RlKik7Ci0gICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pj4mJik7CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gYnVp
bGRPYmplY3RGb3JOb2RlKFdlYkNvcmU6Ok5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7
CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlG
b3JFbGVtZW50QXR0cmlidXRlcyhXZWJDb3JlOjpFbGVtZW50Kik7CisgICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxk
QXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihXZWJDb3JlOjpOb2RlKiBjb250YWluZXIsIGludCBk
ZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgV2ViQ29yZTo6Tm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoV2ViQ29yZTo6Tm9kZSop
OworICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8V2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGludD4+JiYpOwogICAgIAotICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCk7Ci0gICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwor
ICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
V2ViQ29yZTo6Tm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwog
CiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKIAotICAgIHZvaWQgaW5uZXJIaWdobGlnaHRR
dWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7
CisgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkZs
b2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdl
Q29vcmRpbmF0ZXMpOwogCiAgICAgUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAg
SW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheSog
bV9vdmVybGF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9N
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgRE9NTGlzdGVuZXIq
IG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFwOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEJhY2tlbmROb2RlSWQ+IE5vZGVUb0Jh
Y2tlbmRJZE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vZGU+LCBC
YWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIE5v
ZGVUb0JhY2tlbmRJZE1hcD4gbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1hcDsKICAgICAvLyBPd25z
IG5vZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Tm9kZVRvSWRNYXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOwotICAgIEhhc2hNYXA8
aW50LCBOb2RlKj4gbV9pZFRvTm9kZTsKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6Tm9kZSo+
IG1faWRUb05vZGU7CiAgICAgSGFzaE1hcDxpbnQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNN
YXA7CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hpbGRyZW5SZXF1ZXN0ZWQ7Ci0gICAgSGFzaE1hcDxC
YWNrZW5kTm9kZUlkLCBzdGQ6OnBhaXI8Tm9kZSosIFN0cmluZz4+IG1fYmFja2VuZElkVG9Ob2Rl
OworICAgIEhhc2hNYXA8QmFja2VuZE5vZGVJZCwgc3RkOjpwYWlyPFdlYkNvcmU6Ok5vZGUqLCBT
dHJpbmc+PiBtX2JhY2tlbmRJZFRvTm9kZTsKICAgICBpbnQgbV9sYXN0Tm9kZUlkOwogICAgIEJh
Y2tlbmROb2RlSWQgbV9sYXN0QmFja2VuZE5vZGVJZDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1f
ZG9jdW1lbnQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZlB0cjxOb2Rl
Pj4+IFNlYXJjaFJlc3VsdHM7CisgICAgUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50PiBtX2RvY3Vt
ZW50OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Tm9kZT4+PiBTZWFyY2hSZXN1bHRzOwogICAgIFNlYXJjaFJlc3VsdHMgbV9zZWFyY2hSZXN1bHRz
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3Jl
dmFsaWRhdGVTdHlsZUF0dHJUYXNrOwotICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFy
Y2hpbmdGb3JOb2RlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IG1faW5z
cGVjdE1vZGVIaWdobGlnaHRDb25maWc7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckhp
c3Rvcnk+IG1faGlzdG9yeTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NRWRpdG9yPiBtX2RvbUVk
aXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SGlnaGxpZ2h0Q29uZmlnPiBtX2lu
c3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkRPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAgICAgYm9vbCBtX3N1cHByZXNzQXR0cmlidXRlTW9k
aWZpZWRFdmVudDsKICAgICBib29sIG1fZG9jdW1lbnRSZXF1ZXN0ZWQ7CiB9OwogCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvckRPTUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzdjZmQzMjQ2MDEw
MmVjZjIyYmE2NWNjZGE0ZDM4YmE3ZjA1OTU3My4uNTg1OWQzOGE0NzVlM2E2ZTU0MDdhODE3NjFh
Y2I5M2NiYjE5ZWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNTUsOSArNTUsOSBAQCBjb25zdCBpbnQg
ZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKIAogfQogCi11c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBET01EZWJ1Z2dlckFnZW50OjpET01EZWJ1
Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERPTUFn
ZW50KiBkb21BZ2VudCwgRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCkKICAgICA6IFdlYkFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIERPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQog
ICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIERPTURlYnVnZ2VyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRE9NRGVidWdnZXJC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAot
dm9pZCBET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIERPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci5jbGVhcigpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBET01EZWJ1Z2dl
ckFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUmIG5vZGUpCiAgICAgaWYgKGhhc0Jy
ZWFrcG9pbnQoJm5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwg
ZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnRE
YXRhKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBET01EZWJ1Z2dlckFn
ZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpCiAgICAgaWYgKGhhc0JyZWFrcG9p
bnQoJnBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNj
cmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkLCB0cnVlLCBldmVudERh
dGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2
ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsK
ICAgICB9CiB9CiAKQEAgLTI4MCwxMSArMjgwLDExIEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6
d2lsbFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmbm9k
ZSwgTm9kZVJlbW92ZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0
YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9N
RXZlbnQobm9kZSwgTm9kZVJlbW92ZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAg
ICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAg
ICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9IGVsc2UgaWYgKHBh
cmVudE5vZGUgJiYgaGFzQnJlYWtwb2ludChwYXJlbnROb2RlLCBTdWJ0cmVlTW9kaWZpZWQpKSB7
CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgU3VidHJl
ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9N
LCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQogCkBAIC0yOTMsNyArMjkzLDcgQEAg
dm9pZCBET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50
KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsK
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChlbGVtZW50LCBBdHRy
aWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAtMzY3LDkgKzM2Nyw5
IEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9v
bCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZl
bnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBldmVudERhdGEtPnNldFN0
cmluZygiZXZlbnROYW1lIiwgZnVsbEV2ZW50TmFtZSk7CiAgICAgaWYgKHN5bmNocm9ub3VzKQot
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50
RGF0YSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2Rl
YnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkp
OwogfQogCiB2b2lkIERPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHVybCkKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIERPTURlYnVn
Z2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVSTCIsIGJyZWFrcG9pbnRV
UkwpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6WEhSLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6WEhS
LCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiB9CiAKIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6Y2xl
YXIoKQpAQCAtNDIxLDQgKzQyMSw0IEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6Y2xlYXIoKQog
ICAgIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVyID0gZmFsc2U7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggOTVjNjI5
YTM4MjlmYTE5MDNjMGFhMTFhMTNkY2Q5YzQ1MjMyN2NjYS4uMjhlMjBiMWYzMTNiYzgyYTczN2I2
ZDAzNWZhNzkzNDZlNDgyYWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zOCwyNCArMzgsMjMgQEAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01BZ2VudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKK30KKworbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CitjbGFzcyBET01BZ2VudDsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIERPTURlYnVnZ2VyQWdlbnQgZmluYWwgOiBw
dWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpEZWJ1Z2dlckFnZW50OjpMaXN0
ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgeworY2xhc3MgRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2Us
IHB1YmxpYyBEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIERPTURlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShET01EZWJ1Z2dl
ckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBET01E
ZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBET01BZ2VudCosIEluc3BlY3Rvcjo6
RGVidWdnZXJBZ2VudCopOworICAgIERPTURlYnVnZ2VyQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVu
dGluZ0FnZW50cyosIERPTUFnZW50KiwgRGVidWdnZXJBZ2VudCopOwogICAgIHZpcnR1YWwgfkRP
TURlYnVnZ2VyQWdlbnQoKTsKIAogICAgIC8vIERPTURlYnVnZ2VyIEFQSQpAQCAtNjksMzAgKzY4
LDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgotICAgIHZvaWQgd2lsbElu
c2VydERPTU5vZGUoTm9kZSYgcGFyZW50KTsKLSAgICB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0
dHIoTm9kZSYpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7Ci0gICAgdm9pZCB3
aWxsUmVtb3ZlRE9NTm9kZShOb2RlJik7Ci0gICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUm
KTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKKyAgICB2b2lkIHdpbGxJ
bnNlcnRET01Ob2RlKFdlYkNvcmU6Ok5vZGUmIHBhcmVudCk7CisgICAgdm9pZCBkaWRJbnZhbGlk
YXRlU3R5bGVBdHRyKFdlYkNvcmU6Ok5vZGUmKTsKKyAgICB2b2lkIGRpZEluc2VydERPTU5vZGUo
V2ViQ29yZTo6Tm9kZSYpOworICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoV2ViQ29yZTo6Tm9k
ZSYpOworICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShXZWJDb3JlOjpOb2RlJik7CisgICAgdm9p
ZCB3aWxsTW9kaWZ5RE9NQXR0cihXZWJDb3JlOjpFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRp
dmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUs
IGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5l
bCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICAv
LyBJbnNwZWN0b3I6OkRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uLgorICAg
IC8vIERlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwg
dm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVi
dWdnZXJXYXNEaXNhYmxlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwSW50bygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzYWJsZSgpOwogCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRh
cmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIGRlc2NyaXB0aW9uKTsKLSAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3Bv
aW50cyhOb2RlKiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKLSAgICBib29sIGhhc0Jy
ZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZl
bnQoV2ViQ29yZTo6Tm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0
aW9uLCBJbnNwZWN0b3JPYmplY3QmIGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZVN1YnRy
ZWVCcmVha3BvaW50cyhXZWJDb3JlOjpOb2RlKiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0
KTsKKyAgICBib29sIGhhc0JyZWFrcG9pbnQoV2ViQ29yZTo6Tm9kZSosIGludCB0eXBlKTsKICAg
ICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CkBAIC0xMDAsMTUgKzk5
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgRE9NQWdlbnQqIG1fZG9t
QWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKLSAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVha3Bv
aW50czsKKyAgICBEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7CisgICAgUmVmUHRyPERP
TURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3hockJyZWFrcG9pbnRzOwogICAgIGJvb2wgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVu
ZXI7CiAgICAgYm9vbCBtX3BhdXNlT25BbGxYSFJzRW5hYmxlZDsKIH07CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA4NTFlZmIzYzRj
ODU3YzNhOTRjZDAzYTNhYTY4ZDlhMzQ3YzZhMjJiLi5jZjExNDVkNWJkMzdjNjcwYjhhMzAzNjky
ZjU3MmZiNzU4YTBkZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIERPTVN0b3JhZ2VB
Z2VudDo6RE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIFBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIDogV2ViQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNjYsMTMgKzY2LDEz
IEBAIERPTVN0b3JhZ2VBZ2VudDo6fkRPTVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzID0gbnVsbHB0cjsKIH0KIAotdm9pZCBET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
K3ZvaWQgRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gRE9NU3Rv
cmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQogCi12b2lkIERPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQordm9pZCBET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIo
KTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JT
dHJpbmcmKQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogfQogCi12b2lkIERPTVN0b3JhZ2VBZ2Vu
dDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQor
dm9pZCBET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBSZWZQ
dHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQogewog
ICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0g
ZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQuY29weVJlZigpLCBmcmFtZSk7
CkBAIC0xMDAsMTMgKzEwMCwxMyBAQCB2b2lkIERPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFn
ZUl0ZW1zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzdG9yYWdlSXRlbXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pjo6Y3JlYXRlKCk7
CisgICAgYXV0byBzdG9yYWdlSXRlbXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9y
YWdlQXJlYS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFy
ZWEtPmtleShpKTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5
KTsKIAotICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKGtleSk7CiAgICAgICAgIGVu
dHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAgc3RvcmFnZUl0ZW1zLT5hZGRJdGVtKFdURjo6
bW92ZShlbnRyeSkpOwpAQCAtMTU0LDkgKzE1NCw5IEBAIFN0cmluZyBET01TdG9yYWdlQWdlbnQ6
OnN0b3JhZ2VJZChTdG9yYWdlKiBzdG9yYWdlKQogICAgIHJldHVybiBzdG9yYWdlSWQoc2VjdXJp
dHlPcmlnaW4uZ2V0KCksIGlzTG9jYWxTdG9yYWdlKS0+dG9KU09OU3RyaW5nKCk7CiB9CiAKLVJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IERPTVN0b3Jh
Z2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBp
c0xvY2FsU3RvcmFnZSkKK1JlZlB0cjxQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gUHJvdG9jb2w6OkRP
TVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0SXNMb2NhbFN0b3Jh
Z2UoaXNMb2NhbFN0b3JhZ2UpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcKICAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVy
IHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5
T3JpZ2luLCBzdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOworICAgIFJlZlB0cjxQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwg
c3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIAogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKGlkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaAppbmRleCBmNmViNzU2N2Y2YzQyZjY1NzZhOWY1MGZmMjVjOTJiZDQ3YTg4YzlhLi40NGQw
MDYyMTE2MGZjODNlYWZmNjJkZDdiOTYzNWM3YzU0YTI5NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0zNSw1NCAr
MzUsNTMgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIERPTVN0b3JhZ2VGcm9u
dGVuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewotCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFz
cyBQYWdlOwotY2xhc3MgUGFnZUFnZW50OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBT
dG9yYWdlOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIERPTVN0b3JhZ2VGcm9u
dGVuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIFBhZ2VBZ2VudDsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIERPTVN0b3JhZ2VBZ2VudCBm
aW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgRE9NU3RvcmFnZUFnZW50IGZpbmFsIDog
cHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIERPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERPTVN0
b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50Kik7CisgICAgRE9NU3Rv
cmFnZUFnZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlQWdlbnQqKTsKICAg
ICB2aXJ0dWFsIH5ET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9u
dGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2
b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3Jh
Z2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHN0b3JhZ2VJZCwgUmVmUHRyPFByb3RvY29sOjpBcnJh
eTxQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0o
RXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHN0b3JhZ2VJZCwg
Y29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGlu
amVjdGVkIHNjcmlwdC4KLSAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQo
U2VjdXJpdHlPcmlnaW4qLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKKyAgICBTdHJpbmcgc3RvcmFn
ZUlkKFdlYkNvcmU6OlN0b3JhZ2UqKTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkRPTVN0b3JhZ2U6
OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xv
Y2FsU3RvcmFnZSk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24KLSAgICB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdl
VHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQYWdlKik7CisgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0
b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgV2ViQ29yZTo6U3RvcmFnZVR5cGUsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiwgV2ViQ29yZTo6UGFnZSopOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTdG9y
YWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBGcmFtZSomKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYsIFdlYkNvcmU6OkZyYW1lKiYpOwogCiAgICAgUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IDk2MWJlNDAyNjdhOTcw
ZjQyY2RmNjAxYmIzYmQ1NDM1YWM0ODE4NTIuLjEzNzY0ZDliOGZkYWUyMjQxNTBjMTc0ZjAyNDZl
ZGU4ZjViNmM1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAKIAogdHlwZWRlZiBJbnNwZWN0
b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQ2FsbGJhY2sg
RXhlY3V0ZVNRTENhbGxiYWNrOwogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBuYW1lc3BhY2UgewogCkBAIC0yMjIsMTMgKzIyMiwxMyBAQCBEYXRhYmFzZUFn
ZW50Ojp+RGF0YWJhc2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXREYXRh
YmFzZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIERhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgRGF0
YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKQordm9pZCBEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
bnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC0zMTgsNCArMzE4
LDQgQEAgRGF0YWJhc2UqIERhdGFiYXNlQWdlbnQ6OmRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkKQogICAgIHJldHVybiBpdC0+dmFsdWUtPmRhdGFiYXNlKCk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggOGRl
ZGJiZTM2ZWRhNTJkY2U2OTgzMTc5ZTIwMzJlMTJlMDBhOGZlZi4uMjk2N2ZlMzU5NjdhMTJjMzVi
MjNjNjM5MDJiZjgwNjZiMDVhOWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zNSwyNiArMzUsMjYgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1l
c3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3BlY3RvckFycmF5OwotfQotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworCitjbGFzcyBJbnNwZWN0b3JBcnJheTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIERhdGFiYXNlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFz
cyBEYXRhYmFzZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqKTsKKyAgICBleHBsaWNpdCBEYXRhYmFzZUFnZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdB
Z2VudHMqKTsKICAgICB2aXJ0dWFsIH5EYXRhYmFzZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CiAKQEAgLTY1LDIw
ICs2NSwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZjxF
eGVjdXRlU1FMQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhl
IGluamVjdGVkIHNjcmlwdC4KLSAgICBTdHJpbmcgZGF0YWJhc2VJZChEYXRhYmFzZSopOworICAg
IFN0cmluZyBkYXRhYmFzZUlkKFdlYkNvcmU6OkRhdGFiYXNlKik7CiAKLSAgICB2b2lkIGRpZE9w
ZW5EYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlPiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICB2b2lkIGRpZE9w
ZW5EYXRhYmFzZShQYXNzUmVmUHRyPFdlYkNvcmU6OkRhdGFiYXNlPiwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKIHByaXZh
dGU6Ci0gICAgRGF0YWJhc2UqIGRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlk
KTsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWQpOworICAgIFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UqIGZpbmRCeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+PiBEYXRhYmFzZVJlc291cmNl
c01hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPj4gRGF0YWJhc2VSZXNvdXJjZXNN
YXA7CiAgICAgRGF0YWJhc2VSZXNvdXJjZXNNYXAgbV9yZXNvdXJjZXM7CiAgICAgYm9vbCBtX2Vu
YWJsZWQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckRhdGFiYXNlQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IDI0MjU5NzZmMTVkMDVmZWIyZTYxZDI2MzI1YTQzY2NkNmJhMTg0Y2EuLjk0ZGJj
MmYxMzM5ZjBmMjZmMTczODcwZGMzNDQ5ZWRjYmNkNjY3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtODMsOSAr
ODMsOSBAQCB0eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZQogdHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4
ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0
RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxs
YmFjazsKIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFt
ZXNwYWNlIHsKIApAQCAtNzc0LDYgKzc3NCw2IEBAIHZvaWQgSW5kZXhlZERCQWdlbnQ6OmNsZWFy
T2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlCiAg
ICAgY2xlYXJPYmplY3RTdG9yZS0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oCmluZGV4IDgyNmNhYWMzZWI0Y2JlNDFhOGM0ZjIxMzhhNGI2ZDllZTVkNDFjMDIuLjkw
ODUyNzg2YzQ5YzJkZjI1NzAwNmQ2NzEwMWI5YWRkMzJiY2E3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC0zOCwzOCAr
MzgsMzUgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgUGFnZUFnZW50
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5kZXhlZERCQWdlbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbmRleGVkREJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5kZXhlZERCQWdlbnQgZmluYWwgOiBw
dWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgSW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKIHB1YmxpYzoKLSAgICBJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdlQWdlbnQqKTsKKyAgICBJbmRl
eGVkREJBZ2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiwgUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5kZXhlZERCQWdlbnQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBm
cm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBzZWN1cml0eU9yaWdpbiwgUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+JiYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgUmVmPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNp
emUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBrZXlSYW5nZSwg
UmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0RGF0YShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwg
Y29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBrZXlSYW5nZSwgUmVmPFJlcXVlc3REYXRhQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVOYW1lLCBSZWY8
Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAg
ICBQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWRE
QkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbmRl
eGVkREJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkZDE3OTdjNmU2NjEwY2YxZDk2NTMzMWQzNzBjZDBi
ZDM0OGU0ZGVjLi42ZjYyMTg0NDZhMWQ1ZDkwZTBhODUzY2I3ZDM5MDkxMmQzNmZlYWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCkBAIC01OCw4ICs1OCwxMCBAQCBjbGFzcyBTY3JpcHRPYmplY3Q7CiAKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogY2xhc3MgQ29uc29sZU1lc3NhZ2U7CitjbGFzcyBDU1NBZ2VudDsKIGNsYXNz
IFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKK2NsYXNzIFRpbWVsaW5l
QWdlbnQ7CiB9CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjgsNyArNzAsNiBAQCBjbGFzcyBQcm9m
aWxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU0FnZW50OwogY2xhc3MgQ1NT
UnVsZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKQEAgLTk4
LDcgKzk5LDYgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xh
c3MgU3R5bGVSdWxlOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudDsKLWNsYXNzIFRpbWVs
aW5lQWdlbnQ7CiBjbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlUHJveHk7CkBAIC00NjIsNyArNDYyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCi0gICAgc3RhdGljIFRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBz
dGF0aWMgSW5zcGVjdG9yOjpUaW1lbGluZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0aWMgdm9pZCBw
YXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5nQWdlbnRzJiwgYm9vbCBpc0RP
TUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAgICAg
c3RhdGljIHZvaWQgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3RydW1lbnRpbmdBZ2VudHMm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwCmluZGV4IDljYjFmMGFhMDRlZGIzY2Q4MjM3ZGI3ZjU5MzcwNDY3MDJhMDFmZmMu
LjYwM2U3ZDcxMGI4MTZhYjQ4NDU3NDlhZTBkNmZhZmZjYmFkYTBhODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAt
NDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlIDxpbnNwZWN0
b3IvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIExheWVyVHJlZUFnZW50OjpMYXllclRyZWVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIDogV2ViQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiTGF5ZXJUcmVlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCkBAIC01NiwxMyArNTYs
MTMgQEAgTGF5ZXJUcmVlQWdlbnQ6On5MYXllclRyZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0K
IAotdm9pZCBMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBMYXllclRyZWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRl
bmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IExheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIExheWVyVHJlZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2
b2lkIExheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC0zNTcsNCArMzU3LDQgQEAgdm9pZCBMYXll
clRyZWVBZ2VudDo6dW5iaW5kUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVt
ZW50KQogICAgIG1fcHNldWRvRWxlbWVudFRvSWRNYXAucmVtb3ZlKGl0ZXJhdG9yKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4
IDMyZGNmMzgyZGQzNjZiNWIxZThjMzBlYWQwZmE4ZDNjYzQxM2IyMjUuLjVhMDk3NzQ0NzA3ZDFi
NzQ0MzdhYThiMzM1MGIxZGM5ZWQ5MGNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0zOSwyNSArMzksMjcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIExheWVyVHJlZUFnZW50IGZpbmFs
IDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIExheWVyVHJlZUFnZW50IGZpbmFsIDogcHVibGlj
IFdlYkFnZW50QmFzZSwgcHVibGljIExheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTGF5
ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIGV4cGxpY2l0IExheWVyVHJl
ZUFnZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5MYXll
clRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAg
ICAgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHJlbmRlckxheWVyRGVzdHJv
eWVkKGNvbnN0IFJlbmRlckxheWVyJik7Ci0gICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVk
KFBzZXVkb0VsZW1lbnQmKTsKKyAgICB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFdl
YkNvcmU6OlJlbmRlckxheWVyJik7CisgICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFdl
YkNvcmU6OlBzZXVkb0VsZW1lbnQmKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1l
bmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAt
NjcsMzAgKzY5LDMwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBSZW5kZXJMYXllci1y
ZWxhdGVkIG1ldGhvZHMuCi0gICAgU3RyaW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAg
ICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOworICAgIFN0cmluZyBiaW5kKGNvbnN0
IFdlYkNvcmU6OlJlbmRlckxheWVyKik7CisgICAgdm9pZCB1bmJpbmQoY29uc3QgV2ViQ29yZTo6
UmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7
Ci0gICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3Ry
aW5nJiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJM
YXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYsIFdlYkNvcmU6OlJl
bmRlck9iamVjdCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1Vz
aW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBXZWJDb3JlOjpSZW5kZXJMYXll
ciosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpM
YXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nJiwgUmVuZGVy
TGF5ZXIqKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0
PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9y
U3RyaW5nJiwgV2ViQ29yZTo6UmVuZGVyTGF5ZXIqKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogCi0gICAgaW50IGlkRm9yTm9kZShFcnJvclN0cmluZyYsIE5vZGUq
KTsKKyAgICBpbnQgaWRGb3JOb2RlKEVycm9yU3RyaW5nJiwgV2ViQ29yZTo6Tm9kZSopOwogCi0g
ICAgU3RyaW5nIGJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsKLSAgICB2b2lkIHVu
YmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOworICAgIFN0cmluZyBiaW5kUHNldWRv
RWxlbWVudChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50Kik7CisgICAgdm9pZCB1bmJpbmRQc2V1ZG9F
bGVtZW50KFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQqKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiAKLSAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgU3Ry
aW5nPiBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBjb25zdCBS
ZW5kZXJMYXllcio+IG1faWRUb0xheWVyOworICAgIEhhc2hNYXA8Y29uc3QgV2ViQ29yZTo6UmVu
ZGVyTGF5ZXIqLCBTdHJpbmc+IG1fZG9jdW1lbnRMYXllclRvSWRNYXA7CisgICAgSGFzaE1hcDxT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVyKj4gbV9pZFRvTGF5ZXI7CiAKLSAgICBI
YXNoTWFwPFBzZXVkb0VsZW1lbnQqLCBTdHJpbmc+IG1fcHNldWRvRWxlbWVudFRvSWRNYXA7Ci0g
ICAgSGFzaE1hcDxTdHJpbmcsIFBzZXVkb0VsZW1lbnQqPiBtX2lkVG9Qc2V1ZG9FbGVtZW50Owor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UHNldWRvRWxlbWVudCosIFN0cmluZz4gbV9wc2V1ZG9FbGVt
ZW50VG9JZE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UHNldWRvRWxlbWVudCo+
IG1faWRUb1BzZXVkb0VsZW1lbnQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckxheWVy
VHJlZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDQzNGQ4NDY1NWUxYWVmZWUyNTg4MjIyMDExYmUyNDBmODkzOTk0NWUu
LmE2NmI0YTU2YzVkODI1YjUwMGJlYTU0NmExNDRhZjYxY2RiODNhMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03OSwxNCArNzks
MTQgQEAKICNpbmNsdWRlICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogc3RhdGljIGJvb2wgZGVjb2RlQnVm
ZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7Ci0gICAg
ICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICAgICAgV2Vi
Q29yZTo6VGV4dEVuY29kaW5nIGVuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOwogICAgICAgICBp
ZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xh
dGluMUVuY29kaW5nKCk7CiAgICAgICAgICpyZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUoYnVmZmVy
LCBzaXplKTsKQEAgLTMzNywxMyArMzM3LDEzIEBAIFBhZ2VBZ2VudDo6UGFnZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UsIEluc3BlCiB7
CiB9CiAKLXZvaWQgUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IFBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KIAotdm9pZCBQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC0xMDcx
LDQgKzEwNzEsNCBAQCB2b2lkIFBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIFN0cmluZyogZGF0YSkKICNlbmRpZgogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAwMmIxZDQ2Y2Q1OGU0Mjg4OGQwZjRmMDIzZTFlMGJi
MmRhNzRjZmZhLi40Zjg0MzM4NDE2NjhkNjgyMjhkMDRmMjFkYmU1NzczMzg4ZDA3OWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00MSwx
MyArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwpAQCAtNjEsMTQgKzU1LDIwIEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBVUkw7Cit9
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNz
IEluc3BlY3Rvck9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IFBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgUGFnZUFnZW50IGZpbmFsIDog
cHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIFBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIFBhZ2VB
Z2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiwgV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudCosIFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXkqKTsKIAogICAg
IGVudW0gUmVzb3VyY2VUeXBlIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZSwKQEAgLTgxLDE2
ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UKICAgICB9OwogCi0gICAg
c3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiwgU3RyaW5n
KiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1
ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwotICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3Qg
VVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwotICAgIHN0YXRpYyBT
dHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICBzdGF0
aWMgYm9vbCBjYWNoZWRSZXNvdXJjZUNvbnRlbnQoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBT
dHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CisgICAgc3RhdGljIGJvb2wgc2hh
cmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcq
IHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwg
V2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9v
bCogYmFzZTY0RW5jb2RlZCk7CisgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNv
dXJjZShXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHRl
eHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CisgICAgc3RhdGljIFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlSnNvbihSZXNvdXJjZVR5cGUpOwotICAgIHN0YXRpYyBSZXNvdXJj
ZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJik7Ci0gICAgc3Rh
dGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZSBjYWNoZWRSZXNvdXJj
ZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CisgICAgc3RhdGljIFJlc291cmNlVHlw
ZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIGNhY2hlZFJl
c291cmNlVHlwZUpzb24oY29uc3QgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8v
IFBhZ2UgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTExOSw0MCArMTE5LDQwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgYXJjaGl2ZShFcnJvclN0cmluZyYsIFN0cmluZyogZGF0YSkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgotICAgIHZv
aWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7
CisgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGRvbUNvbnRlbnRFdmVudEZpcmVk
KCk7CiAgICAgdm9pZCBsb2FkRXZlbnRGaXJlZCgpOwotICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQo
RG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGZyYW1lRGV0YWNoZWQoRnJhbWUmKTsKLSAgICB2
b2lkIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lKERvY3VtZW50TG9hZGVyJik7Ci0gICAgdm9pZCBm
cmFtZVN0YXJ0ZWRMb2FkaW5nKEZyYW1lJik7Ci0gICAgdm9pZCBmcmFtZVN0b3BwZWRMb2FkaW5n
KEZyYW1lJik7Ci0gICAgdm9pZCBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmLCBkb3Vi
bGUgZGVsYXkpOwotICAgIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFt
ZSYpOworICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
KyAgICB2b2lkIGZyYW1lRGV0YWNoZWQoV2ViQ29yZTo6RnJhbWUmKTsKKyAgICB2b2lkIGxvYWRl
ckRldGFjaGVkRnJvbUZyYW1lKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJik7CisgICAgdm9pZCBm
cmFtZVN0YXJ0ZWRMb2FkaW5nKFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCBmcmFtZVN0b3Bw
ZWRMb2FkaW5nKFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCBmcmFtZVNjaGVkdWxlZE5hdmln
YXRpb24oV2ViQ29yZTo6RnJhbWUmLCBkb3VibGUgZGVsYXkpOworICAgIHZvaWQgZnJhbWVDbGVh
cmVkU2NoZWR1bGVkTmF2aWdhdGlvbihXZWJDb3JlOjpGcmFtZSYpOwogICAgIHZvaWQgd2lsbFJ1
bkphdmFTY3JpcHREaWFsb2coY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIGRpZFJ1
bkphdmFTY3JpcHREaWFsb2coKTsKICAgICB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYShTdHJpbmcm
KTsKLSAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJlY3QmKTsK
KyAgICB2b2lkIGRpZFBhaW50KFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6
OkxheW91dFJlY3QmKTsKICAgICB2b2lkIGRpZExheW91dCgpOwogICAgIHZvaWQgZGlkU2Nyb2xs
KCk7CiAgICAgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBzY3JpcHRzRW5h
YmxlZChib29sIGlzRW5hYmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJ
Ci0gICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQotICAgIEZyYW1lKiBtYWluRnJh
bWUoKTsKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CisgICAg
V2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVy
KCk7Ci0gICAgRnJhbWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwotICAgIGJvb2wgaGFzSWRGb3JG
cmFtZShGcmFtZSopIGNvbnN0OwotICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciop
OwotICAgIEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5SYXdTdHJpbmcpOwotICAgIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCk7Ci0gICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3NlcnRE
b2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIEZyYW1lKik7CisgICAgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZnJhbWVJZChXZWJDb3JlOjpGcmFtZSopOworICAgIGJvb2wgaGFzSWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZSopIGNvbnN0OworICAgIFN0cmluZyBsb2FkZXJJZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOworICAgIFdlYkNvcmU6OkZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlP
cmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5SYXdTdHJpbmcpOworICAgIFdlYkNvcmU6OkZyYW1l
KiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CisgICAg
c3RhdGljIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBhc3NlcnREb2N1bWVudExvYWRlcihFcnJv
clN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKik7CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKQEAgLTE2MSwzMiArMTYxLDMxIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wg
bWFpblJlc291cmNlQ29udGVudChXZWJDb3JlOjpGcmFtZSosIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBib29sIGRhdGFDb250ZW50KGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAKLSAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsK
LSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7Ci0gICAgUGFnZSogbV9wYWdlOwotICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwot
ICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsK
KyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKFdlYkNvcmU6OkZyYW1lKik7CisgICAgV2ViQ29yZTo6UGFn
ZSogbV9wYWdlOworICAgIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOworICAgIFJlZlB0cjxQYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OwogICAgIGxvbmcg
bV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7
Ci0gICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRvSWRlbnRpZmllcjsKLSAgICBI
YXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0ZyYW1lOwotICAgIEhhc2hNYXA8
RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVudGlmaWVyOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6RnJhbWUqLCBTdHJpbmc+IG1fZnJhbWVUb0lkZW50aWZpZXI7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lKj4gbV9pZGVudGlmaWVyVG9GcmFtZTsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRlclRvSWRlbnRp
ZmllcjsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1faXNGaXJzdExheW91dEFmdGVy
T25Mb2FkOwogICAgIGJvb2wgbV9vcmlnaW5hbFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkOwogICAg
IGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlvbjsKICAgICBib29sIG1fc2hv
d1BhaW50UmVjdHM7CiAgICAgU3RyaW5nIG1fZW11bGF0ZWRNZWRpYTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQ7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsKIH07CiAK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JQYWdlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCAzMDE1NDdkZGIz
NTQzY2NhYmM0ODBiZTZmMTE4ZjUwNzUzZGIxNDAzLi5jYmE5OTJkYzA2N2FjZTU1ZmM1NWY2NjY4
MzAxOTNlOWZiY2VlMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTUwLDkgKzUwLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gYnVpbGRJbnNwZWN0b3JPYmplY3RG
b3JQb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24pCiB7CkBAIC0xNjcsMTAg
KzE2NywxMCBAQCBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgUmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lvblN0
YXRlKCk7CiB9CiAKLXZvaWQgUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUmVwbGF5QWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UmVwbGF5
QWdlbnQodGhpcyk7CiAgICAgQVNTRVJUKHNlc3Npb25TdGF0ZSgpID09IFdlYkNvcmU6OlNlc3Np
b25TdGF0ZTo6SW5hY3RpdmUpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVwbGF5QWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlCiAgICAgICAgIG1fc2VnbWVudHNNYXAuYWRkKCgqaXQpLT5pZGVudGlmaWVyKCksICpp
dCk7CiB9CiAKLXZvaWQgUmVwbGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgUmVwbGF5QWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
QEAgLTUwNyw2ICs1MDcsNiBAQCB2b2lkIFJlcGxheUFnZW50OjpnZXRTZWdtZW50RGF0YShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OgogICAgIHNlcmlhbGl6
ZWRPYmplY3QgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnQoV1RGOjptb3ZlKHNlZ21l
bnQpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKaW5kZXggNmI2NTA2YTZmNzMwODc3MjQ4
MmNjYzgyYTIyNTQxYmZiYWZjYWExYS4uZjNjYjJmZmE4YWJjNTQxNDBmODVhMThlMjUxODU5ZTc2
ODEwMTY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
cGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmgKQEAgLTM4LDE5ICszOCwyMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RXZlbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQ
YWdlOwotY2xhc3MgUGFnZUFnZW50OwogY2xhc3MgUmVwbGF5U2Vzc2lvbjsKIGNsYXNzIFJlcGxh
eVNlc3Npb25TZWdtZW50OwotCiBlbnVtIGNsYXNzIFNlc3Npb25TdGF0ZTsKLQogc3RydWN0IFJl
cGxheVBvc2l0aW9uOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUGFnZUFn
ZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIHR5cGVkZWYgaW50IFNlc3Npb25J
ZGVudGlmaWVyOwpAQCAtNTgsNDQgKzU5LDQ0IEBAIHR5cGVkZWYgaW50IFNlZ21lbnRJZGVudGlm
aWVyOwogCiBjbGFzcyBSZXBsYXlBZ2VudCBmaW5hbAogICAgIDogcHVibGljIFdlYkFnZW50QmFz
ZQotICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKKyAgICAsIHB1YmxpYyBSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlcGxheUFnZW50KTsKIHB1YmxpYzoKLSAgICBSZXBsYXlBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50Kik7CisgICAgUmVwbGF5QWdlbnQoV2Vi
Q29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflJl
cGxheUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgotICAgIHZvaWQgZnJhbWVOYXZpZ2F0
ZWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGZyYW1lRGV0YWNoZWQoRnJhbWUmKTsKLSAg
ICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiwgRnJhbWUqKTsKKyAgICB2b2lk
IGZyYW1lTmF2aWdhdGVkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBmcmFt
ZURldGFjaGVkKFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChj
b25zdCBXZWJDb3JlOjpFdmVudCYsIFdlYkNvcmU6OkZyYW1lKik7CiAKICAgICAvLyBOb3RpZmlj
YXRpb25zIGZyb20gUmVwbGF5Q29udHJvbGxlci4KLSAgICB2b2lkIHNlc3Npb25DcmVhdGVkKFJl
ZlB0cjxSZXBsYXlTZXNzaW9uPiYmKTsKKyAgICB2b2lkIHNlc3Npb25DcmVhdGVkKFJlZlB0cjxX
ZWJDb3JlOjpSZXBsYXlTZXNzaW9uPiYmKTsKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBpbnRlcm5h
bGx5ICh3aGVuIGFkZGluZy9yZW1vdmluZykgYW5kIGJ5IFJlcGxheUNvbnRyb2xsZXIgZHVyaW5n
IGNhcHR1cmUuCi0gICAgdm9pZCBzZXNzaW9uTW9kaWZpZWQoUmVmUHRyPFJlcGxheVNlc3Npb24+
JiYpOwotICAgIHZvaWQgc2Vzc2lvbkxvYWRlZChSZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJik7Cisg
ICAgdm9pZCBzZXNzaW9uTW9kaWZpZWQoUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb24+JiYp
OworICAgIHZvaWQgc2Vzc2lvbkxvYWRlZChSZWZQdHI8V2ViQ29yZTo6UmVwbGF5U2Vzc2lvbj4m
Jik7CiAKLSAgICB2b2lkIHNlZ21lbnRDcmVhdGVkKFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVu
dD4mJik7Ci0gICAgdm9pZCBzZWdtZW50Q29tcGxldGVkKFJlZlB0cjxSZXBsYXlTZXNzaW9uU2Vn
bWVudD4mJik7Ci0gICAgdm9pZCBzZWdtZW50TG9hZGVkKFJlZlB0cjxSZXBsYXlTZXNzaW9uU2Vn
bWVudD4mJik7CisgICAgdm9pZCBzZWdtZW50Q3JlYXRlZChSZWZQdHI8V2ViQ29yZTo6UmVwbGF5
U2Vzc2lvblNlZ21lbnQ+JiYpOworICAgIHZvaWQgc2VnbWVudENvbXBsZXRlZChSZWZQdHI8V2Vi
Q29yZTo6UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOworICAgIHZvaWQgc2VnbWVudExvYWRlZChS
ZWZQdHI8V2ViQ29yZTo6UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOwogICAgIHZvaWQgc2VnbWVu
dFVubG9hZGVkKCk7CiAKICAgICB2b2lkIGNhcHR1cmVTdGFydGVkKCk7CiAgICAgdm9pZCBjYXB0
dXJlU3RvcHBlZCgpOwogCiAgICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKTsKLSAgICB2b2lkIHBs
YXliYWNrUGF1c2VkKGNvbnN0IFJlcGxheVBvc2l0aW9uJik7Ci0gICAgdm9pZCBwbGF5YmFja0hp
dFBvc2l0aW9uKGNvbnN0IFJlcGxheVBvc2l0aW9uJik7CisgICAgdm9pZCBwbGF5YmFja1BhdXNl
ZChjb25zdCBXZWJDb3JlOjpSZXBsYXlQb3NpdGlvbiYpOworICAgIHZvaWQgcGxheWJhY2tIaXRQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZXBsYXlQb3NpdGlvbiYpOwogICAgIHZvaWQgcGxheWJh
Y2tGaW5pc2hlZCgpOwogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgSW5zcGVjdG9yIGZyb250ZW5k
LgogICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VG9Qb3NpdGlvbihFcnJvclN0cmluZyYsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiwgYm9vbCBzaG91bGRGYXN0Rm9y
d2FyZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcGxheVRvUG9zaXRpb24oRXJyb3JT
dHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmLCBib29sIHNob3VsZEZhc3RG
b3J3YXJkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VG9Db21wbGV0aW9uKEVy
cm9yU3RyaW5nJiwgYm9vbCBzaG91bGRGYXN0Rm9yd2FyZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHBhdXNlUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTExMCwxOSAr
MTExLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VnbWVudERhdGEoRXJyb3JT
dHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4mKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gZmluZFNlc3Npb24o
RXJyb3JTdHJpbmcmLCBTZXNzaW9uSWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPFJlcGxheVNlc3Np
b25TZWdtZW50PiBmaW5kU2VnbWVudChFcnJvclN0cmluZyYsIFNlZ21lbnRJZGVudGlmaWVyKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UmVwbGF5U2Vzc2lvbj4gZmluZFNlc3Npb24oRXJyb3JTdHJp
bmcmLCBTZXNzaW9uSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Np
b25TZWdtZW50PiBmaW5kU2VnbWVudChFcnJvclN0cmluZyYsIFNlZ21lbnRJZGVudGlmaWVyKTsK
ICAgICBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKCkgY29uc3Q7CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJlcGxheUJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIFBhZ2UmIG1fcGFnZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWZQdHI8UmVwbGF5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgV2ViQ29yZTo6UGFnZSYgbV9wYWdlOwogCi0gICAgSGFzaE1hcDxpbnQsIFJlZlB0
cjxSZXBsYXlTZXNzaW9uPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8aW50Pj4gbV9zZXNzaW9uc01hcDsKLSAgICBIYXNoTWFwPGludCwgUmVm
UHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gbV9zZWdtZW50c01hcDsKKyAgICBIYXNoTWFw
PGludCwgUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb24+LCBXVEY6OkludEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBtX3Nlc3Npb25zTWFwOwor
ICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8V2ViQ29yZTo6UmVwbGF5U2Vzc2lvblNlZ21lbnQ+LCBX
VEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+
PiBtX3NlZ21lbnRzTWFwOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IGE0OGIyMmZiODE0OWYyYjFkMWQ1MmUyZmNkYzY5YTg4ODAzMDU5Y2UuLjM4ODM5NjhhOWRm
MTNhODlhNWEyMTQ3OGMxMDFmZTZmMTliN2M0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY5LDExICs2OSwxMSBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogdHlwZWRlZiBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkxvYWRSZXNvdXJjZUNhbGxiYWNrIExvYWRSZXNvdXJjZUNhbGxiYWNrOwogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsKIApAQCAt
OTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgYXNzdW1lcyB0ZXh0IG9u
bHkgcmVzcG9uc2VzLiBXZSBzaG91bGQgc3VwcG9ydCBub24tdGV4dCByZXNwb25zZXMgYXMgd2Vs
bC4KLSAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhyZXNwb25zZS50ZXh0RW5jb2Rp
bmdOYW1lKCkpOworICAgICAgICBXZWJDb3JlOjpUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgIGJvb2wgdXNlRGV0ZWN0b3IgPSBm
YWxzZTsKICAgICAgICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKSB7CiAgICAgICAgICAg
ICB0ZXh0RW5jb2RpbmcgPSBVVEY4RW5jb2RpbmcoKTsKQEAgLTE3MywxMyArMTczLDEzIEBAIFJl
c291cmNlQWdlbnQ6OlJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgUGFnZUFnZW50CiB7CiB9CiAKLXZvaWQgUmVzb3VyY2VBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gTmV0d29ya0JhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIFJl
c291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbikKK3ZvaWQgUmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpAQCAtNzkzLDQgKzc5
Myw0IEBAIHZvaWQgUmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9h
ZGVyJiBsb2FkZXIpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVhcihtX3BhZ2VBZ2VudC0+bG9h
ZGVySWQoJmxvYWRlcikpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCmluZGV4IGQwN2NkYWVmNDhhYjY5MmU4ZDlmODZhNjAxMzYzNDQzMDc5
NDBiYWYuLmJlNjM1MDUxOTFlM2JjMWI2ZDMzYjQ4MzFhYzhhNjIxZTNhMjdhMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAt
MzksMTMgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9y
QXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LQogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNTQsOSArNDgsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwot
Y2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBQYWdlOwotY2xhc3MgUGFnZUFnZW50
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpAQCAtNjQsNjQgKzU2LDY4IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OwogY2xh
c3MgVVJMOwotY2xhc3MgWEhSUmVwbGF5RGF0YTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwotCi0j
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tldEZyYW1lOwotI2VuZGlmCit9
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKK2NsYXNzIFBhZ2VB
Z2VudDsKK2NsYXNzIFhIUlJlcGxheURhdGE7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogCi1jbGFzcyBSZXNvdXJjZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBS
ZXNvdXJjZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIE5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2VBZ2Vu
dCosIEluc3BlY3RvckNsaWVudCopOworICAgIFJlc291cmNlQWdlbnQoV2ViQ29yZTo6SW5zdHJ1
bWVudGluZ0FnZW50cyosIFBhZ2VBZ2VudCosIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCopOwog
ICAgIHZpcnR1YWwgflJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9u
dGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAg
dm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHls
ZSgpOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
c291cmNlTG9hZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciYgbG9hZGVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIm
LCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwot
ICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyJiwg
Q2FjaGVkUmVzb3VyY2UmKTsKLSAgICB2b2lkIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0
ZWRMb2FkaW5nRm9yQ2xpZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCopOwotICAgIHZvaWQgd2lsbExvYWRYSFIoVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBSZWZQdHI8
Rm9ybURhdGE+JiYgYm9keSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNs
dWRlQ3JlbmRlbnRpYWxzKTsKLSAgICB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nKFRocmVhZGFibGVM
b2FkZXJDbGllbnQqKTsKLSAgICB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxv
YWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VTdHJpbmcpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlzaFRpbWUpOworICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
b2N1bWVudExvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lk
IGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciYs
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJik7CisgICAgdm9pZCBkb2N1bWVudFRocmVhZGFibGVM
b2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFdl
YkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKKyAgICB2b2lkIHdpbGxMb2FkWEhSKFdl
YkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBhc3luYywgUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPiYm
IGJvZHksIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVk
ZUNyZW5kZW50aWFscyk7CisgICAgdm9pZCBkaWRGYWlsWEhSTG9hZGluZyhXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJv
bm91c2x5KCk7CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAg
dm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CisgICAgdm9p
ZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJik7CiAj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKTsKLSAgICB2b2lkIHdp
bGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKTsKKyAgICB2b2lkIHdpbGxT
ZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFt
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7Ci0gICAg
dm9pZCBkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBXZWJTb2NrZXRGcmFtZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V2ViU29ja2V0RnJhbWUmKTsK
KyAgICB2b2lkIGRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OldlYlNvY2tldEZyYW1lJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYp
OwogI2VuZGlmCiAKLSAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYp
OworICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJik7
CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAotICAgIHZvaWQgZGlkU2NoZWR1bGVT
dHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKKyAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50Jik7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1
bWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0
b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KFdlYkNvcmU6OkRvY3VtZW50Kik7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSBmcm9udGVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyYs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmlu
ZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcm
LCBib29sKikgb3ZlcnJpZGU7CkBAIC0xMzcsMjQgKzEzMywyNCBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5z
cGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpO
ZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CisgICAgUmVmUHRyPE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2Vz
RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKICAg
ICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBtX2V4dHJhUmVxdWVzdEhlYWRlcnM7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOwogCiAgICAgSGFzaFNldDx1bnNpZ25l
ZCBsb25nPiBtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVyczsKIAotICAgIHR5cGVkZWYgSGFzaE1h
cDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgUmVmUHRyPFhIUlJlcGxheURhdGE+PiBQZW5kaW5n
WEhSUmVwbGF5RGF0YU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGhyZWFkYWJs
ZUxvYWRlckNsaWVudCosIFJlZlB0cjxYSFJSZXBsYXlEYXRhPj4gUGVuZGluZ1hIUlJlcGxheURh
dGFNYXA7CiAgICAgUGVuZGluZ1hIUlJlcGxheURhdGFNYXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0
YTsKICAgICAvLyBGSVhNRTogUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0
eWxlIHJlY2FsY3VsYXRpb24uCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CiAgICAgYm9vbCBt
X2lzUmVjYWxjdWxhdGluZ1N0eWxlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaAppbmRleCBiNTUwMTQyOTI1MWI1YjJiMjNkOTUzZWRkMmY2Y2Q1ZjY5OTNmNDg1Li42
YzJlOTY3NTQ1MzM2OTQ1YWVlY2U2NDA0NGRmZjNiMDE4ZGM2MDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTM4LDYgKzM4LDEwIEBA
CiAKIGNsYXNzIFBhcnNlZFN0eWxlU2hlZXQ7CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xh
c3MgUGFnZUFnZW50OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGVM
aXN0OwpAQCAtNDgsNyArNTIsNiBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yU3R5bGVTaGVldDsKLWNsYXNzIFBh
Z2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTE2Niw3ICsxNjks
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURlY2xh
cmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5bGVNYXA7Ci0gICAg
c3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUoUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVmUHRyPENTU1N0eWxlU2hlZXQ+JiYgcGFnZVN0eWxlU2hlZXQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1
bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxlU2hlZXQ+
IGNyZWF0ZShJbnNwZWN0b3I6OlBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiYmIHBhZ2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKik7
CiAgICAgc3RhdGljIFN0cmluZyBzdHlsZVNoZWV0VVJMKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHls
ZVNoZWV0KTsKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvclN0eWxlU2hlZXQoKTsKQEAgLTE5NSw3
ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTSWQgc3R5bGVJZChDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gcnVsZU9yU3R5bGVJZChzdHlsZSk7IH0K
IAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXQoUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVmUHRyPENTU1N0eWxlU2hlZXQ+JiYgcGFnZVN0eWxlU2hlZXQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1
bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3Rvcjo6
UGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPENTU1N0eWxlU2hlZXQ+JiYgcGFn
ZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKIAogICAgIGJvb2wgY2FuQmlu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsgfQogICAgIEluc3BlY3RvckNTU0lk
IHJ1bGVPclN0eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OwpAQCAtMjI3LDcgKzIz
MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2Vs
ZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBFbGVtZW50
Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWls
ZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqLCBFbGVtZW50Kik7CiAKLSAgICBQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50OworICAgIEluc3BlY3Rvcjo6UGFnZUFnZW50KiBtX3BhZ2VB
Z2VudDsKICAgICBTdHJpbmcgbV9pZDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdl
U3R5bGVTaGVldDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW4gbV9vcmlnaW47CkBAIC0yMzksMTQgKzI0MiwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yU3R5
bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
SW5saW5lU3R5bGU+IGNyZWF0ZShQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8
RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBM
aXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlPiBjcmVhdGUoSW5zcGVjdG9yOjpQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQ
dHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
LCBMaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCk7CiAg
ICAgdmlydHVhbCBib29sIGdldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0
b3JDU1NJZCYgaWQpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGlu
YWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwg
UmVmUHRyPEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbiwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUo
SW5zcGVjdG9yOjpQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4m
JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciop
OwogCiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZv
cihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsgcmV0dXJuIG1fcnVsZVNvdXJjZURh
dGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCBmYmM4MzFhMzAzNTI0ZjQyYmEyY2RmMGM1MTBhNzg0NDRmN2NiNjNj
Li40MmMwYTlhNDExYTJmYzM1MjhlNTVlMzQ5Y2JkZjVlYTMxYjdlNTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC01
NCwxOCArNTQsMTggQEAKICNpbmNsdWRlIDxwcm9maWxlci9MZWdhY3lQcm9maWxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBUaW1lbGluZUFnZW50Ojp+VGltZWxpbmVBZ2VudCgpCiB7CiB9CiAK
LXZvaWQgVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBUaW1lbGluZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
aW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGVyc2lz
dGVudFRpbWVsaW5lQWdlbnQodGhpcyk7CiAKQEAgLTczLDE0ICs3MywxNCBAQCB2b2lkIFRpbWVs
aW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogZnJvbgogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpOwogfQogCi12b2lkIFRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIFRp
bWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFBlcnNpc3RlbnRUaW1lbGluZUFnZW50KG51bGxwdHIpOwogCi0gICAgaWYgKHJlYXNvbiAh
PSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCkg
eworICAgIGlmIChyZWFzb24gIT0gRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVz
dHJveWVkKSB7CiAgICAgICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVyKQogICAgICAgICAgICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci0+cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICB9CkBA
IC01MTMsNyArNTEzLDcgQEAgdm9pZCBUaW1lbGluZUFnZW50OjpkaWREZXN0cm95V2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqIGZyYW1lKQogCiAvLyBTY3JpcHREZWJ1
Z0xpc3RlbmVyCiAKLXZvaWQgVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24mIGFjdGlvbiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikKK3ZvaWQgVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFj
dGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0
aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJhdGNoSWQpOwog
ICAgIEFTU0VSVChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGYyZDcyNDM3ZTc0MzY4NDM5NjU0Y2IzN2JmM2YyMTg1
M2FjYThkMzMuLjY5ODFiY2ZhM2FhOTFmMzJkMzhjYThlYTgwZDg1YzQ5ZGZlZjc2MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApA
QCAtNDcsMjAgKzQ3LDIyIEBAIGNsYXNzIFByb2ZpbGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBJbnRS
ZWN0OwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsKIGNsYXNzIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBVUkw7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworCitjbGFzcyBQYWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
CkBAIC0xMDcsMjUgKzEwOSwyNSBAQCBlbnVtIGNsYXNzIFRpbWVsaW5lUmVjb3JkVHlwZSB7CiAK
IGNsYXNzIFRpbWVsaW5lQWdlbnQgZmluYWwKICAgICA6IHB1YmxpYyBXZWJBZ2VudEJhc2UKLSAg
ICAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0g
ICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKKyAgICAsIHB1Ymxp
YyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwgcHVibGljIFNjcmlwdERl
YnVnTGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVsaW5lQWdlbnQpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gSW5zcGVjdG9y
VHlwZSB7IFBhZ2VJbnNwZWN0b3IsIFdvcmtlckluc3BlY3RvciB9OwogCi0gICAgVGltZWxpbmVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5z
cGVjdG9yQ2xpZW50Kik7CisgICAgVGltZWxpbmVBZ2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5n
QWdlbnRzKiwgUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+VGltZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29u
c3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICBpbnQgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIHNldFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcihQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXIqKTsKKyAgICB2b2lkIHNldFBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cihXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqKTsKIAogICAgIHZvaWQgZGlkQ29tbWl0
TG9hZCgpOwogCkBAIC0xMzQsNDYgKzEzNiw0NiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxK
U0M6OlByb2ZpbGU+IHN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4K
LSAgICB2b2lkIGRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wg
c2luZ2xlU2hvdCwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZFJlbW92ZVRpbWVyKGludCB0aW1lcklk
LCBGcmFtZSopOwotICAgIHZvaWQgd2lsbEZpcmVUaW1lcihpbnQgdGltZXJJZCwgRnJhbWUqKTsK
KyAgICB2b2lkIGRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wg
c2luZ2xlU2hvdCwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIGRpZFJlbW92ZVRpbWVyKGlu
dCB0aW1lcklkLCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZvaWQgd2lsbEZpcmVUaW1lcihpbnQg
dGltZXJJZCwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lkIGRpZEZpcmVUaW1lcigpOwotICAg
IHZvaWQgd2lsbENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3Jp
cHRMaW5lLCBGcmFtZSopOwotICAgIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKEZyYW1lKik7Ci0gICAg
dm9pZCB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiwg
aW50LCBGcmFtZSopOworICAgIHZvaWQgd2lsbENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNj
cmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZvaWQgZGlk
Q2FsbEZ1bmN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CisgICAgdm9pZCB3aWxsRGlzcGF0Y2hYSFJS
ZWFkeVN0YXRlQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiwgaW50LCBXZWJDb3JlOjpGcmFtZSop
OwogICAgIHZvaWQgZGlkRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoKTsKLSAgICB2
b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiwgRnJhbWUqKTsKKyAgICB2b2lkIHdp
bGxEaXNwYXRjaEV2ZW50KGNvbnN0IFdlYkNvcmU6OkV2ZW50JiwgV2ViQ29yZTo6RnJhbWUqKTsK
ICAgICB2b2lkIGRpZERpc3BhdGNoRXZlbnQoKTsKLSAgICB2b2lkIHdpbGxFdmFsdWF0ZVNjcmlw
dChjb25zdCBTdHJpbmcmLCBpbnQsIEZyYW1lJik7Ci0gICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlw
dChGcmFtZSYpOwotICAgIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYpOwotICAgIHZv
aWQgd2lsbExheW91dChGcmFtZSYpOwotICAgIHZvaWQgZGlkTGF5b3V0KFJlbmRlck9iamVjdCop
OwotICAgIHZvaWQgd2lsbFNjcm9sbChGcmFtZSYpOworICAgIHZvaWQgd2lsbEV2YWx1YXRlU2Ny
aXB0KGNvbnN0IFN0cmluZyYsIGludCwgV2ViQ29yZTo6RnJhbWUmKTsKKyAgICB2b2lkIGRpZEV2
YWx1YXRlU2NyaXB0KFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCBkaWRJbnZhbGlkYXRlTGF5
b3V0KFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCB3aWxsTGF5b3V0KFdlYkNvcmU6OkZyYW1l
Jik7CisgICAgdm9pZCBkaWRMYXlvdXQoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Kik7CisgICAgdm9p
ZCB3aWxsU2Nyb2xsKFdlYkNvcmU6OkZyYW1lJik7CiAgICAgdm9pZCBkaWRTY3JvbGwoKTsKLSAg
ICB2b2lkIHdpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChjb25zdCBTdHJpbmcmLCBGcmFtZSopOwor
ICAgIHZvaWQgd2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6
OkZyYW1lKik7CiAgICAgdm9pZCBkaWREaXNwYXRjaFhIUkxvYWRFdmVudCgpOwotICAgIHZvaWQg
d2lsbFBhaW50KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXRSZWN0Jik7Ci0gICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZShGcmFtZSopOwor
ICAgIHZvaWQgd2lsbFBhaW50KFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCBkaWRQYWludChX
ZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpMYXlvdXRSZWN0Jik7CisgICAg
dm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlk
UmVjYWxjdWxhdGVTdHlsZSgpOwotICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRp
b24oRnJhbWUqKTsKLSAgICB2b2lkIHdpbGxXcml0ZUhUTUwodW5zaWduZWQgc3RhcnRMaW5lLCBG
cmFtZSopOworICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oV2ViQ29yZTo6
RnJhbWUqKTsKKyAgICB2b2lkIHdpbGxXcml0ZUhUTUwodW5zaWduZWQgc3RhcnRMaW5lLCBXZWJD
b3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlkV3JpdGVIVE1MKHVuc2lnbmVkIGVuZExpbmUpOwot
ICAgIHZvaWQgZGlkVGltZVN0YW1wKEZyYW1lJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBk
aWRNYXJrRE9NQ29udGVudEV2ZW50KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRNYXJrTG9hZEV2ZW50
KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNr
SWQsIEZyYW1lKik7Ci0gICAgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZShpbnQgY2FsbGJh
Y2tJZCwgRnJhbWUqKTsKLSAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxi
YWNrSWQsIEZyYW1lKik7CisgICAgdm9pZCBkaWRUaW1lU3RhbXAoV2ViQ29yZTo6RnJhbWUmLCBj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZE1hcmtET01Db250ZW50RXZlbnQoV2ViQ29yZTo6
RnJhbWUmKTsKKyAgICB2b2lkIGRpZE1hcmtMb2FkRXZlbnQoV2ViQ29yZTo6RnJhbWUmKTsKKyAg
ICB2b2lkIGRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCwgV2ViQ29yZTo6
RnJhbWUqKTsKKyAgICB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lk
LCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQg
Y2FsbGJhY2tJZCwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25G
cmFtZSgpOwotICAgIHZvaWQgdGltZShGcmFtZSYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
dGltZUVuZChGcmFtZSYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdGltZShXZWJDb3JlOjpG
cmFtZSYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdGltZUVuZChXZWJDb3JlOjpGcmFtZSYs
IGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICB2b2lkIGRpZENy
ZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIEZyYW1lKik7Ci0gICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lXZWJTb2NrZXQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1l
Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZvaWQgZGlkRGVzdHJv
eVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lKik7CiAj
ZW5kaWYKIAogcHJvdGVjdGVkOgpAQCAtMTg1LDcgKzE4Nyw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25T
b3VuZChpbnQpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGJy
ZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFRpbWVsaW5lUmVjb3JkU3RhY2s7CkBAIC0xOTMsMTQgKzE5NSwxNCBAQCBw
cml2YXRlOgogICAgIHN0cnVjdCBUaW1lbGluZVJlY29yZEVudHJ5IHsKICAgICAgICAgVGltZWxp
bmVSZWNvcmRFbnRyeSgpCiAgICAgICAgICAgICA6IHR5cGUoVGltZWxpbmVSZWNvcmRUeXBlOjpF
dmVudERpc3BhdGNoKSB7IH0KLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQorICAgICAgICBUaW1lbGlu
ZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGls
ZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IHJlY29yZChyZWNv
cmQpLCBkYXRhKGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiksIHR5cGUodHlwZSkKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZWNvcmQ7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0
YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGE7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hp
bGRyZW47CiAgICAgICAgIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlOwogICAgIH07CiAKQEAgLTIw
OCwyOSArMjEwLDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRlcm5hbFN0b3AoKTsKICAgICBk
b3VibGUgdGltZXN0YW1wKCk7CiAKLSAgICB2b2lkIHNlbmRFdmVudChSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+JiYpOwotICAgIHZvaWQgYXBwZW5kUmVjb3JkKFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wg
Y2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKLSAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3JkKFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiwgVGltZWxpbmVSZWNvcmRUeXBlLCBi
b29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CisgICAgdm9pZCBzZW5kRXZlbnQoUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJik7CisgICAgdm9pZCBhcHBlbmRSZWNvcmQoUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxT
dGFjaywgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3JkKFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiYsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2Fs
bFN0YWNrLCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoY29u
c3QgVGltZWxpbmVSZWNvcmRFbnRyeSYgcmVjb3JkKSB7IG1fcmVjb3JkU3RhY2suYXBwZW5kKHJl
Y29yZCk7IH0KIAotICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgY3JlYXRlUmVjb3JkRW50cnkoUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlw
ZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOworICAgIFRpbWVsaW5lUmVjb3JkRW50
cnkgY3JlYXRlUmVjb3JkRW50cnkoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1l
bGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgV2ViQ29yZTo6RnJhbWUqKTsK
IAotICAgIHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiByZWNvcmQsIEZyYW1lKik7CisgICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIoSW5zcGVjdG9y
T2JqZWN0KiByZWNvcmQsIFdlYkNvcmU6OkZyYW1lKik7CiAKICAgICB2b2lkIGRpZENvbXBsZXRl
UmVjb3JkRW50cnkoY29uc3QgVGltZWxpbmVSZWNvcmRFbnRyeSYpOwogICAgIHZvaWQgZGlkQ29t
cGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAKLSAgICB2b2lkIGFkZFJl
Y29yZFRvVGltZWxpbmUoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBUaW1l
bGluZVJlY29yZFR5cGUpOworICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYmLCBUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIHZvaWQgY2xlYXJSZWNv
cmRTdGFjaygpOwogCi0gICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgTGF5b3V0UmVjdCYsIEZsb2F0UXVhZCopOwotICAgIFBhZ2UqIHBhZ2UoKTsKKyAg
ICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QmLCBjb25z
dCBXZWJDb3JlOjpMYXlvdXRSZWN0JiwgV2ViQ29yZTo6RmxvYXRRdWFkKik7CisgICAgV2ViQ29y
ZTo6UGFnZSogcGFnZSgpOwogCiAgICAgUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgV2ViQ29yZTo6UGFn
ZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVsaW5lRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8VGltZWxp
bmVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAogICAgIFZlY3RvcjxU
aW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwogCkBAIC0yMzgsNyArMjQwLDcgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9jYWxsU3RhY2tEZXB0aDsKICAgICBpbnQgbV9tYXhDYWxsU3Rh
Y2tEZXB0aDsKICAgICBJbnNwZWN0b3JUeXBlIG1faW5zcGVjdG9yVHlwZTsKLSAgICBJbnNwZWN0
b3JDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCogbV9jbGll
bnQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9wZW5kaW5nQ29uc29sZVBy
b2ZpbGVSZWNvcmRzOwogCkBAIC0yNDYsNiArMjQ4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZW5hYmxlZEZyb21Gcm9udGVuZDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldlYkFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFn
ZW50QmFzZS5oCmluZGV4IGE4ODY2NTJhNGE2YzY2NTY5MjExMzkwZTdjZWVhYjVhNjIwNmU3MDYu
LjM4Y2FhNTdhY2Y2NTUyODc3MzhjMDAyYjFlZmM4NzU5Yzg5MGQzOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMyLDIwICsz
MiwyMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Cit9CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1jbGFzcyBXZWJBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yOjpBZ2VudEJh
c2UgeworY2xhc3MgV2ViQWdlbnRCYXNlIDogcHVibGljIEFnZW50QmFzZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgV2ViQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgOiBJbnNwZWN0b3I6OkFnZW50QmFzZShu
YW1lKQorICAgIFdlYkFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Okluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgICAgIDogQWdlbnRCYXNl
KG5hbWUpCiAgICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2Vu
dHMpCiAgICAgewogICAgIH0KIAotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVu
dGluZ0FnZW50czsKKyAgICBXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvcldlYkFnZW50QmFzZV9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAKaW5kZXggODIzY2ZmODhlZDQ3OWIzYjZhNzc3OWU3Nzc3ODJmOGY5ODE2YWE3MS4uOThlMTQ2
ZmMyMTViOGZkZjVlYThmYzA2YjAwMGE1MWMzZjBjNjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zOSwxNCArMzksMTQg
QEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBjbGFzcyBXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlckZyb250ZW5kQ2hhbm5lbChJbnNw
ZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmREaXNwYXRjaGVyLCBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkKKyAgICBleHBsaWNpdCBXb3JrZXJGcm9udGVuZENo
YW5uZWwoV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZERpc3BhdGNoZXIsIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQogICAgICAgICA6IG1fZnJvbnRlbmREaXNwYXRjaGVy
KGZyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgLCBtX3Byb3h5KHByb3h5KQogICAgICAgICAs
IG1faWQoc19uZXh0SWQrKykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIobV9pZCwgbWVzc2Fn
ZU9iamVjdCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNo
ZXIqIG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFdvcmtlckZyb250ZW5kRGlzcGF0Y2hlciog
bV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogbV9wcm94
eTsKICAgICBpbnQgbV9pZDsKICAgICBib29sIG1fY29ubmVjdGVkOwpAQCAtMTE0LDEzICsxMTQs
MTMgQEAgV29ya2VyQWdlbnQ6On5Xb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRXb3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdvcmtlckJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIFdvcmtl
ckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIFdvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJP
blN0YXJ0ID0gZmFsc2U7CiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwpAQCAtMjM2LDQgKzIzNiw0
IEBAIHZvaWQgV29ya2VyQWdlbnQ6OmNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3JrZXJH
bG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndv
cmtlckNyZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29y
a2VyT25TdGFydCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuaAppbmRleCAxNmRhODA2OTg4OWEwYjc3ZjQyNGIzOGJkYzM2NGY3YjhiM2ViOGJkLi5l
ZmM5OGU3ODE4NTNjMjE5Y2IzOGE5MTU5NTQxZDQ2NGI2ZjQ0MmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtMzYsMzEgKzM2LDMx
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
Ci1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIFdv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHk7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OworY2xhc3MgV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAotY2xhc3MgV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xh
c3MgV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgV29ya2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7
CisgICAgZXhwbGljaXQgV29ya2VyQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyop
OwogICAgIHZpcnR1YWwgfldvcmtlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAg
ICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpIGNvbnN0OwotICAgIHZv
aWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29u
c3QgVVJMJik7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoV29ya2VyR2xv
YmFsU2NvcGVQcm94eSopOworICAgIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2Nv
cGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC02
OCwyNiArNjgsMjYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5JbnNwZWN0V29ya2Vy
cyhFcnJvclN0cmluZyYsIGJvb2wqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dFRvV29ya2VyKEVycm9yU3RyaW5nJiwgaW50IHdvcmtlcklkKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcmLCBpbnQgd29ya2VySWQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3Ry
aW5nJiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9X
b3JrZXIoRXJyb3JTdHJpbmcmLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1dG9jb25u
ZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nJiwgYm9vbCB2YWx1ZSkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWxzRm9yRXhpc3RpbmdXb3Jr
ZXJzKCk7Ci0gICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWwoV29ya2VyR2xvYmFs
U2NvcGVQcm94eSosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGNyZWF0ZVdvcmtlckZy
b250ZW5kQ2hhbm5lbChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHZvaWQgZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMoKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6V29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRy
PFdvcmtlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wg
bV9lbmFibGVkOwogICAgIGJvb2wgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQ7
CiAKICAgICBjbGFzcyBXb3JrZXJGcm9udGVuZENoYW5uZWw7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgV29ya2VyRnJvbnRlbmRDaGFubmVsKj4gV29ya2VyQ2hhbm5lbHM7CiAgICAgV29ya2Vy
Q2hhbm5lbHMgbV9pZFRvQ2hhbm5lbDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V29ya2VyR2xvYmFs
U2NvcGVQcm94eSosIFN0cmluZz4gRGVkaWNhdGVkV29ya2VyczsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVQcm94eSosIFN0cmluZz4gRGVkaWNhdGVkV29y
a2VyczsKICAgICBEZWRpY2F0ZWRXb3JrZXJzIG1fZGVkaWNhdGVkV29ya2VyczsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gIWRlZmluZWQoSW5zcGVjdG9yV29ya2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4IGNiOWEyYWI2NjgyYTA1ZDg3OTk0
ODNjZjIwNDg2MWQ3ZWRlNjFiM2UuLmNhMTIzOTkxM2QwNjE3OTJlNmZmNGFmN2RmZWQyNDBkNGIz
YjI0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2Vu
dHMuaApAQCAtMzksMjAgKzM5LDE1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBEZWJ1Z2dlckFnZW50OwotY2xhc3MgSW5zcGVj
dG9yQWdlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgQXBwbGljYXRpb25D
YWNoZUFnZW50OwogY2xhc3MgQ1NTQWdlbnQ7CiBjbGFzcyBEYXRhYmFzZUFnZW50OworY2xhc3Mg
RGVidWdnZXJBZ2VudDsKIGNsYXNzIERPTUFnZW50OwogY2xhc3MgRE9NRGVidWdnZXJBZ2VudDsK
IGNsYXNzIERPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIExheWVyVHJlZUFnZW50OwotY2xhc3MgUGFn
ZTsKK2NsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgUGFnZUFnZW50OwogY2xhc3MgUGFnZURl
YnVnZ2VyQWdlbnQ7CiBjbGFzcyBQYWdlUnVudGltZUFnZW50OwpAQCAtNjEsOCArNTYsMTMgQEAg
Y2xhc3MgUmVzb3VyY2VBZ2VudDsKIGNsYXNzIFRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBXZWJDb25z
b2xlQWdlbnQ7CiBjbGFzcyBXb3JrZXJBZ2VudDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwog
Y2xhc3MgV29ya2VyUnVudGltZUFnZW50OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFBhZ2U7CitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RydW1lbnRpbmdBZ2VudHM+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnN0cnVtZW50aW5nQWdlbnRzKTsKQEAgLTgwLDYxICs4MCw2
MSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckFnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNw
ZWN0b3JBZ2VudChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3Rv
ckFnZW50ID0gYWdlbnQ7IH0KIAotICAgIFBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlQWdlbnQ7IH0KLSAgICB2b2lkIHNldFBhZ2VBZ2VudChQYWdlQWdlbnQqIGFn
ZW50KSB7IG1fcGFnZUFnZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6OlBhZ2VBZ2VudCog
cGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KKyAgICB2b2lkIHNldFBh
Z2VBZ2VudChJbnNwZWN0b3I6OlBhZ2VBZ2VudCogYWdlbnQpIHsgbV9wYWdlQWdlbnQgPSBhZ2Vu
dDsgfQogCi0gICAgQ1NTQWdlbnQqIGNzc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9jc3NBZ2Vu
dDsgfQotICAgIHZvaWQgc2V0Q1NTQWdlbnQoQ1NTQWdlbnQqIGFnZW50KSB7IG1fY3NzQWdlbnQg
PSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6Q1NTQWdlbnQqIGNzc0FnZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jc3NBZ2VudDsgfQorICAgIHZvaWQgc2V0Q1NTQWdlbnQoSW5zcGVjdG9yOjpDU1NB
Z2VudCogYWdlbnQpIHsgbV9jc3NBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBXZWJDb25zb2xlQWdl
bnQqIHdlYkNvbnNvbGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29uc29sZUFnZW50OyB9
Ci0gICAgdm9pZCBzZXRXZWJDb25zb2xlQWdlbnQoV2ViQ29uc29sZUFnZW50KiBhZ2VudCkgeyBt
X3dlYkNvbnNvbGVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpXZWJDb25zb2xlQWdl
bnQqIHdlYkNvbnNvbGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29uc29sZUFnZW50OyB9
CisgICAgdm9pZCBzZXRXZWJDb25zb2xlQWdlbnQoSW5zcGVjdG9yOjpXZWJDb25zb2xlQWdlbnQq
IGFnZW50KSB7IG1fd2ViQ29uc29sZUFnZW50ID0gYWdlbnQ7IH0KIAotICAgIERPTUFnZW50KiBk
b21BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQWdlbnQ7IH0KLSAgICB2b2lkIHNldERPTUFn
ZW50KERPTUFnZW50KiBhZ2VudCkgeyBtX2RvbUFnZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0
b3I6OkRPTUFnZW50KiBkb21BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQWdlbnQ7IH0KKyAg
ICB2b2lkIHNldERPTUFnZW50KEluc3BlY3Rvcjo6RE9NQWdlbnQqIGFnZW50KSB7IG1fZG9tQWdl
bnQgPSBhZ2VudDsgfQogCi0gICAgUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb3VyY2VBZ2VudDsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VBZ2VudChS
ZXNvdXJjZUFnZW50KiBhZ2VudCkgeyBtX3Jlc291cmNlQWdlbnQgPSBhZ2VudDsgfQorICAgIElu
c3BlY3Rvcjo6UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VBZ2VudDsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VBZ2VudChJbnNwZWN0b3I6OlJl
c291cmNlQWdlbnQqIGFnZW50KSB7IG1fcmVzb3VyY2VBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBQ
YWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
UnVudGltZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRQYWdlUnVudGltZUFnZW50KFBhZ2VSdW50aW1l
QWdlbnQqIGFnZW50KSB7IG1fcGFnZVJ1bnRpbWVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVj
dG9yOjpQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlUnVudGltZUFnZW50OyB9CisgICAgdm9pZCBzZXRQYWdlUnVudGltZUFnZW50KEluc3Bl
Y3Rvcjo6UGFnZVJ1bnRpbWVBZ2VudCogYWdlbnQpIHsgbV9wYWdlUnVudGltZUFnZW50ID0gYWdl
bnQ7IH0KIAotICAgIFdvcmtlclJ1bnRpbWVBZ2VudCogd29ya2VyUnVudGltZUFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV93b3JrZXJSdW50aW1lQWdlbnQ7IH0KLSAgICB2b2lkIHNldFdvcmtlclJ1
bnRpbWVBZ2VudChXb3JrZXJSdW50aW1lQWdlbnQqIGFnZW50KSB7IG1fd29ya2VyUnVudGltZUFn
ZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6OldvcmtlclJ1bnRpbWVBZ2VudCogd29ya2Vy
UnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJSdW50aW1lQWdlbnQ7IH0KKyAg
ICB2b2lkIHNldFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OldvcmtlclJ1bnRpbWVBZ2Vu
dCogYWdlbnQpIHsgbV93b3JrZXJSdW50aW1lQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVBZ2VudDsg
fQotICAgIHZvaWQgc2V0VGltZWxpbmVBZ2VudChUaW1lbGluZUFnZW50KiBhZ2VudCkgeyBtX3Rp
bWVsaW5lQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVBZ2VudDsgfQorICAgIHZvaWQg
c2V0VGltZWxpbmVBZ2VudChJbnNwZWN0b3I6OlRpbWVsaW5lQWdlbnQqIGFnZW50KSB7IG1fdGlt
ZWxpbmVBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBUaW1lbGluZUFnZW50KiBwZXJzaXN0ZW50VGlt
ZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFRpbWVsaW5lQWdlbnQ7IH0K
LSAgICB2b2lkIHNldFBlcnNpc3RlbnRUaW1lbGluZUFnZW50KFRpbWVsaW5lQWdlbnQqIGFnZW50
KSB7IG1fcGVyc2lzdGVudFRpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6
VGltZWxpbmVBZ2VudCogcGVyc2lzdGVudFRpbWVsaW5lQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X3BlcnNpc3RlbnRUaW1lbGluZUFnZW50OyB9CisgICAgdm9pZCBzZXRQZXJzaXN0ZW50VGltZWxp
bmVBZ2VudChJbnNwZWN0b3I6OlRpbWVsaW5lQWdlbnQqIGFnZW50KSB7IG1fcGVyc2lzdGVudFRp
bWVsaW5lQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdl
QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbVN0b3JhZ2VBZ2VudDsgfQotICAgIHZvaWQgc2V0
RE9NU3RvcmFnZUFnZW50KERPTVN0b3JhZ2VBZ2VudCogYWdlbnQpIHsgbV9kb21TdG9yYWdlQWdl
bnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6RE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdl
QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbVN0b3JhZ2VBZ2VudDsgfQorICAgIHZvaWQgc2V0
RE9NU3RvcmFnZUFnZW50KEluc3BlY3Rvcjo6RE9NU3RvcmFnZUFnZW50KiBhZ2VudCkgeyBtX2Rv
bVN0b3JhZ2VBZ2VudCA9IGFnZW50OyB9CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBS
ZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGxheUFnZW50OyB9
Ci0gICAgdm9pZCBzZXRSZXBsYXlBZ2VudChSZXBsYXlBZ2VudCogYWdlbnQpIHsgbV9yZXBsYXlB
Z2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX3JlcGxheUFnZW50OyB9CisgICAgdm9pZCBzZXRSZXBsYXlBZ2Vu
dChJbnNwZWN0b3I6OlJlcGxheUFnZW50KiBhZ2VudCkgeyBtX3JlcGxheUFnZW50ID0gYWdlbnQ7
IH0KICNlbmRpZgogCi0gICAgRGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YWJhc2VBZ2VudDsgfQotICAgIHZvaWQgc2V0RGF0YWJhc2VBZ2VudChEYXRh
YmFzZUFnZW50KiBhZ2VudCkgeyBtX2RhdGFiYXNlQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3Bl
Y3Rvcjo6RGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YWJhc2VBZ2VudDsgfQorICAgIHZvaWQgc2V0RGF0YWJhc2VBZ2VudChJbnNwZWN0b3I6OkRhdGFi
YXNlQWdlbnQqIGFnZW50KSB7IG1fZGF0YWJhc2VBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBBcHBs
aWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25DYWNoZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hl
QWdlbnQoQXBwbGljYXRpb25DYWNoZUFnZW50KiBhZ2VudCkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUFn
ZW50OyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlQWdlbnQqIGFnZW50KSB7IG1fYXBwbGljYXRpb25DYWNoZUFnZW50ID0gYWdl
bnQ7IH0KIAogICAgIEluc3BlY3Rvcjo6RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudDsgfQogICAgIHZvaWQgc2V0RGVidWdnZXJBZ2Vu
dChJbnNwZWN0b3I6OkRlYnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fZGVidWdnZXJBZ2VudCA9IGFn
ZW50OyB9CiAKLSAgICBQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VEZWJ1Z2dlckFnZW50OyB9Ci0gICAgdm9pZCBzZXRQYWdlRGVidWdn
ZXJBZ2VudChQYWdlRGVidWdnZXJBZ2VudCogYWdlbnQpIHsgbV9wYWdlRGVidWdnZXJBZ2VudCA9
IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2Vy
QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VEZWJ1Z2dlckFnZW50OyB9CisgICAgdm9pZCBz
ZXRQYWdlRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OlBhZ2VEZWJ1Z2dlckFnZW50KiBhZ2VudCkg
eyBtX3BhZ2VEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIAotICAgIERPTURlYnVnZ2VyQWdlbnQq
IGRvbURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbURlYnVnZ2VyQWdlbnQ7IH0K
LSAgICB2b2lkIHNldERPTURlYnVnZ2VyQWdlbnQoRE9NRGVidWdnZXJBZ2VudCogYWdlbnQpIHsg
bV9kb21EZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6OkRPTURlYnVnZ2Vy
QWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbURlYnVnZ2VyQWdl
bnQ7IH0KKyAgICB2b2lkIHNldERPTURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpET01EZWJ1Z2dl
ckFnZW50KiBhZ2VudCkgeyBtX2RvbURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgV29y
a2VyQWdlbnQqIHdvcmtlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJBZ2VudDsgfQot
ICAgIHZvaWQgc2V0V29ya2VyQWdlbnQoV29ya2VyQWdlbnQqIGFnZW50KSB7IG1fd29ya2VyQWdl
bnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6V29ya2VyQWdlbnQqIHdvcmtlckFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJBZ2VudDsgfQorICAgIHZvaWQgc2V0V29ya2VyQWdlbnQo
SW5zcGVjdG9yOjpXb3JrZXJBZ2VudCogYWdlbnQpIHsgbV93b3JrZXJBZ2VudCA9IGFnZW50OyB9
CiAKLSAgICBMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X2xheWVyVHJlZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRMYXllclRyZWVBZ2VudChMYXllclRyZWVB
Z2VudCogYWdlbnQpIHsgbV9sYXllclRyZWVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9y
OjpMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2xheWVy
VHJlZUFnZW50OyB9CisgICAgdm9pZCBzZXRMYXllclRyZWVBZ2VudChJbnNwZWN0b3I6OkxheWVy
VHJlZUFnZW50KiBhZ2VudCkgeyBtX2xheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KIAogcHJpdmF0
ZToKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1l
bnQmKTsKQEAgLTE0MiwyNiArMTQyLDI2IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKIAogICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAgUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsK
LSAgICBDU1NBZ2VudCogbV9jc3NBZ2VudDsKLSAgICBMYXllclRyZWVBZ2VudCogbV9sYXllclRy
ZWVBZ2VudDsKLSAgICBXZWJDb25zb2xlQWdlbnQqIG1fd2ViQ29uc29sZUFnZW50OwotICAgIERP
TUFnZW50KiBtX2RvbUFnZW50OwotICAgIFJlc291cmNlQWdlbnQqIG1fcmVzb3VyY2VBZ2VudDsK
LSAgICBQYWdlUnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQ7Ci0gICAgV29ya2VyUnVu
dGltZUFnZW50KiBtX3dvcmtlclJ1bnRpbWVBZ2VudDsKLSAgICBUaW1lbGluZUFnZW50KiBtX3Rp
bWVsaW5lQWdlbnQ7Ci0gICAgVGltZWxpbmVBZ2VudCogbV9wZXJzaXN0ZW50VGltZWxpbmVBZ2Vu
dDsKLSAgICBET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFnZW50OworICAgIEluc3BlY3Rv
cjo6UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKKyAgICBJbnNwZWN0b3I6OkNTU0FnZW50KiBtX2Nz
c0FnZW50OworICAgIEluc3BlY3Rvcjo6TGF5ZXJUcmVlQWdlbnQqIG1fbGF5ZXJUcmVlQWdlbnQ7
CisgICAgSW5zcGVjdG9yOjpXZWJDb25zb2xlQWdlbnQqIG1fd2ViQ29uc29sZUFnZW50OworICAg
IEluc3BlY3Rvcjo6RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpSZXNvdXJj
ZUFnZW50KiBtX3Jlc291cmNlQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpQYWdlUnVudGltZUFnZW50
KiBtX3BhZ2VSdW50aW1lQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpXb3JrZXJSdW50aW1lQWdlbnQq
IG1fd29ya2VyUnVudGltZUFnZW50OworICAgIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCogbV90
aW1lbGluZUFnZW50OworICAgIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCogbV9wZXJzaXN0ZW50
VGltZWxpbmVBZ2VudDsKKyAgICBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VBZ2VudCogbV9kb21TdG9y
YWdlQWdlbnQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgUmVwbGF5QWdlbnQqIG1fcmVw
bGF5QWdlbnQ7CisgICAgSW5zcGVjdG9yOjpSZXBsYXlBZ2VudCogbV9yZXBsYXlBZ2VudDsKICNl
bmRpZgotICAgIERhdGFiYXNlQWdlbnQqIG1fZGF0YWJhc2VBZ2VudDsKLSAgICBBcHBsaWNhdGlv
bkNhY2hlQWdlbnQqIG1fYXBwbGljYXRpb25DYWNoZUFnZW50OworICAgIEluc3BlY3Rvcjo6RGF0
YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OworICAgIEluc3BlY3Rvcjo6QXBwbGljYXRpb25D
YWNoZUFnZW50KiBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICAgICBJbnNwZWN0b3I6OkRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBQYWdlRGVidWdnZXJBZ2VudCogbV9wYWdl
RGVidWdnZXJBZ2VudDsKLSAgICBET01EZWJ1Z2dlckFnZW50KiBtX2RvbURlYnVnZ2VyQWdlbnQ7
Ci0gICAgV29ya2VyQWdlbnQqIG1fd29ya2VyQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpQYWdlRGVi
dWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKKyAgICBJbnNwZWN0b3I6OkRPTURlYnVn
Z2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKKyAgICBJbnNwZWN0b3I6OldvcmtlckFnZW50
KiBtX3dvcmtlckFnZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggMmVkOTI1ZmE3ZThkOGIxYzBmNGEzOGNl
NjYzOTY2MWNiMDQ3YWI2MC4uM2RmNzZlN2E5YjU2ODVjMmNlZTM2NzBlYWQ4NmI5Y2UyYmNiYjY0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC00MywxMCArNDMsOSBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOwogc3RhdGljIHNpemVfdCBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiB9CiAKLXVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUmVmPFhIUlJlcGxheURhdGE+
IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgYXN5bmMsIFJlZlB0cjxGb3JtRGF0YT4mJiBmb3JtRGF0YSwgY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCiB7CkBAIC0zNzgsNCAr
Mzc3LDQgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlRnJlZVNwYWNlKHNpemVf
dCBzaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZmY2ZWNkNTI3MjAwOWFhNWY1NzZkMTg0OTc5ZDc4
MDJkZDg1NDc3Yy4uZDg5MmMwMWFjNDdmMWVjYWY2Mzg5YzRiZmEyYmY1YWVjZTE0Y2QwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAg
LTQwLDMxICs0MCwzMyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIFhI
UlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxYSFJSZXBsYXlEYXRhPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRo
b2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIFJlZlB0cjxGb3JtRGF0YT4mJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIHN0YXRp
YyBSZWY8WEhSUmVwbGF5RGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBib29sIGFzeW5jLCBSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+JiYsIGNv
bnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRp
YWxzKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRo
b2Q7IH0KLSAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGJv
b2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9Ci0gICAgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRhOyB9Ci0gICAgY29uc3Qg
SFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyczsgfQorICAg
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtRGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIGhlYWRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnM7IH0KICAgICBib29sIGluY2x1ZGVDcmVkZW50aWFs
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZUNyZWRlbnRpYWxzOyB9CiBwcml2YXRlOgotICAg
IFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5
bmMsIFJlZlB0cjxGb3JtRGF0YT4mJiwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9v
bCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nICZt
ZXRob2QsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgYXN5bmMsIFJlZlB0cjxXZWJDb3JlOjpG
b3JtRGF0YT4mJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBp
bmNsdWRlQ3JlZGVudGlhbHMpOwogCiAgICAgU3RyaW5nIG1fbWV0aG9kOwotICAgIFVSTCBtX3Vy
bDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgYm9vbCBtX2FzeW5jOwotICAgIFJlZlB0
cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKLSAgICBjb25zdCBIVFRQSGVhZGVyTWFwIG1faGVhZGVy
czsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IG1fZm9ybURhdGE7CisgICAgY29uc3Qg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CiAgICAgYm9vbCBtX2luY2x1ZGVDcmVk
ZW50aWFsczsKIH07CiAKQEAgLTEwNSwxNCArMTA3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgU3Ry
aW5nIHRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7
IH0KICAgICAgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkgeyBtX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CiAK
LSAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURjo6bW92
ZShkZWNvZGVyKTsgfQorICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rl
cj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KKyAgICAg
ICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiYm
IGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGOjptb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29w
eVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Y29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7IH0KIAot
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFJlc291cmNlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2FjaGVkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKSB7IG1fY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNv
dXJjZTsgfQorICAgICAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlOyB9CisgICAgICAgIHZvaWQgc2V0Q2Fj
aGVkUmVzb3VyY2UoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKSB7IG1f
Y2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZTsgfQogCiAgICAgICAgIFhIUlJlcGxheURh
dGEqIHhoclJlcGxheURhdGEoKSBjb25zdCB7IHJldHVybiBtX3hoclJlcGxheURhdGEuZ2V0KCk7
IH0KICAgICAgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKFhIUlJlcGxheURhdGEqIHhoclJlcGxh
eURhdGEpIHsgbV94aHJSZXBsYXlEYXRhID0geGhyUmVwbGF5RGF0YTsgfQpAQCAtMTMwLDE2ICsx
MzIsMTYgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9jb250ZW50OwogICAgICAgICBSZWZQ
dHI8WEhSUmVwbGF5RGF0YT4gbV94aHJSZXBsYXlEYXRhOwogICAgICAgICBib29sIG1fYmFzZTY0
RW5jb2RlZDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOworICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IGJvb2wgbV9pc0NvbnRlbnRFdmljdGVkOwogICAgICAgICBQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSBtX3R5cGU7CiAgICAgICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCiAgICAgICAgIFN0cmlu
ZyBtX3RleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Ci0g
ICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlOworICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2U7CiAgICAgfTsKIAogICAgIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhKCk7CkBAIC0xNDcsMTYgKzE0OSwxNiBAQCBwdWJsaWM6CiAgICAgfk5ldHdvcmtSZXNv
dXJjZXNEYXRhKCk7CiAKICAgICB2b2lkIHJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCk7Ci0gICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7CiAgICAgdm9pZCBtYXliZUFk
ZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkKTsKLSAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3Vy
Y2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZENh
Y2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZSopOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQpOwotICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVz
b3VyY2UoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0
cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIHNldFhIUlJl
cGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFhIUlJlcGxheURhdGEqKTsKQEAgLTE3
OSw2ICsxODEsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX21heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChOZXR3b3JrUmVzb3VyY2VzRGF0YV9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4
IDEzMjhjN2U5M2M3ZDA1NDQ3NGVjZDFhNTNmOGI2ZWFhMWNiMDdmOTMuLmJmZmE2NDE3NDhmM2Fi
OWI4NGVjZGQzMjM3NmE4Yzg0Y2Y0ODI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIFBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VD
b25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIERPTUFnZW50KiBkb21BZ2VudCkKICAgICA6IFdlYkNvbnNvbGVBZ2VudChpbmplY3RlZFNj
cmlwdE1hbmFnZXIpCkBAIC03Niw0ICs3Niw0IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRk
SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAg
ICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
Q29uc29sZUFnZW50LmgKaW5kZXggZGVlMjljZmI5MjdkMzkzZjczZDQzMTM5MmFmMDg1YjcwMDBj
MDA0Ni4uNjYzYmFkMjJhNzcyNjYxYjM4M2I4M2NiZTVlOWUxZjJmNDU2MjYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCkBAIC0zMyw5ICszMywxMCBA
QAogCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBET01BZ2VudDsKK2NsYXNzIFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlcjsKIAogY2xhc3MgUGFnZUNvbnNvbGVBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDb25zb2xl
QWdlbnQpOwpAQCAtNTIsNiArNTMsNiBAQCBwcml2YXRlOgogICAgIERPTUFnZW50KiBtX2RvbUFn
ZW50OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChQYWdlQ29uc29sZUFnZW50X2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4MTViZDAzMjZl
YTVkMzBlYWZhMWFmN2I3ZDUyNDMyNzY0MGM4YjljLi44YTVhZWY1Njc0NzhkYjBkNzkxNDU4MTNj
MTZmZmI3MGE4NzQxMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUGFn
ZURlYnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkK
ICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQpAQCAtMTQzLDQgKzE0Myw0IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRp
ZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCkKICAgICBkaWRDbGVhckdsb2JhbE9iamVjdCgp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggNjQ0
MmNhOWVkNjkwNTEwMTcwZmRkOTRkOTRmMTU2NTE5MmQzMzI4Yy4uMWQ4MDY4NzhlMmZmZDFmYzA0
M2IzZGIxNzFhYmRlZjlhYjhkNGMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VEZWJ1Z2dlckFnZW50LmgKQEAgLTM1LDIzICszNSwyMyBAQAogI2luY2x1ZGUgIldlYkRlYnVn
Z2VyQWdlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdl
QWdlbnQ7CiBjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7Cit9CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBjbGFzcyBQYWdlRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1
Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnZXJBZ2VudCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZURlYnVnZ2Vy
QWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdl
bnRzKiwgUGFnZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIFBhZ2VEZWJ1Z2dlckFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMq
LCBQYWdlQWdlbnQqLCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+
UGFnZURlYnVnZ2VyQWdlbnQoKSB7IH0KIAogICAgIHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5k
b3dPYmplY3QoKTsKIAotICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHRE
ZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZVNjcmlwdERl
YnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwpAQCAtNjcsMTQgKzY3LDE0IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0
IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1l
c3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAogICAgIFBhZ2VB
Z2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OwotICAg
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKKyAgICBXZWJDb3JlOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoUGFnZURl
YnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFn
ZW50LmNwcAppbmRleCBjOTlhNDcyMGY3ZTg3OGIyZjAzYjI3OTI2NDBhMjQ5ZTZmODI4ZTU4Li5j
MGM2NzdhYWY1NDNlMDNiODc4MjFiODVjNDkzODUzZDk4ZTQyMTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAK
IHVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNj
cmlwdGlvbjsKIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFnZSwgUGFnZUFnZW50KiBwYWdlQWdlbnQp
CiAgICAgOiBSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtNTksMTMgKzU5
LDEzIEBAIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsCiB7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRp
bWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVh
c29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50
aW1lQWdlbnQuaAppbmRleCBhNDBhNWE0MDQxZThiY2U0MTRhMDRkYTNhZjE2MjZiYTYxYzBkZjVl
Li43YmI1MjE0ZWVhZmE3MjgzNDg1MTBlZWYyMTAwNjQwOTk2NGFiZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTM4LDQ0ICszOCw0NSBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KIAotbmFtZXNwYWNlIEluc3BlY3Rv
ciB7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwotY2xhc3MgUGFnZUFnZW50OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CitjbGFzcyBQYWdlQWdlbnQ7CisgICAgCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgUGFnZVJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3I6OlJ1bnRpbWVBZ2VudCB7CitjbGFzcyBQYWdlUnVudGltZUFnZW50IGZpbmFsIDog
cHVibGljIFJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgUGFnZVJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdl
ciosIFBhZ2UqLCBQYWdlQWdlbnQqKTsKKyAgICBQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciosIFdlYkNvcmU6OlBhZ2UqLCBQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5Q
YWdlUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFu
bmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgotICAgIHZvaWQgZGlkQ3JlYXRlTWFpbldvcmxk
Q29udGV4dChGcmFtZSYpOworICAgIHZvaWQgZGlkQ3JlYXRlTWFpbldvcmxkQ29udGV4dChXZWJD
b3JlOjpGcmFtZSYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0o
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBvcnRFeGVjdXRp
b25Db250ZXh0Q3JlYXRpb24oKTsKLSAgICB2b2lkIG5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgSlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbiosIGJvb2wg
aXNQYWdlQ29udGV4dCk7CisgICAgdm9pZCBub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIEpTQzo6RXhlY1N0YXRlKiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBi
b29sIGlzUGFnZUNvbnRleHQpOwogCi0gICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOworICAgIFdl
YkNvcmU6OlBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBQYWdlQWdlbnQqIG1fcGFnZUFnZW50
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAg
UmVmUHRyPFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAg
ICBib29sIG1fbWFpbldvcmxkQ29udGV4dENyZWF0ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDJmNDcyNTdkMzYwNzQ2ZjY0YjI5
OTljOTg2MWE3NWIwYzgyOTQwMTguLjY4ODlkMWU5ZGNlMGY3OTQzYTRlYzlmMmIwMTE0MWVjZGM1
ODMyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3Bw
CkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiBXZWJDb25zb2xlQWdlbnQ6OldlYkNvbnNvbGVBZ2VudChX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IENv
bnNvbGVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC0xMDgsNCArMTA4LDQgQEAgdm9p
ZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFp
bGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaAppbmRleCAzNjdlMjc4NTM2Yjc3MGFhYjBm
NDYyNjZjMDM1ZThkZGUwNDZkNTZlLi44OTJlOTMzNjVkNGM5MDFkOGYxY2FlNmE3ZmYyMTFjM2Vh
OTk5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCkBA
IC0yOSwxNCArMjksMTcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIERPTVdpbmRvdzsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsKKwogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIFdlYkNvbnNvbGVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3I6OkNvbnNvbGVBZ2VudCB7CitjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBwdWJs
aWMgQ29uc29sZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb25zb2xlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDUsMTYgKzQ4
LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxl
ZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2b2lk
IGZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyopOworICAgIHZvaWQgZnJhbWVXaW5kb3dE
aXNjYXJkZWQoV2ViQ29yZTo6RE9NV2luZG93Kik7CiAKICAgICB2b2lkIGRpZEZpbmlzaFhIUkxv
YWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVk
IHNlbmRDb2x1bW5OdW1iZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKIHByb3RlY3RlZDoKICAgICBib29s
IG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKFdlYkNvbnNvbGVB
Z2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDc1YTBmNWIxNzY5M2JkYTBkZjc1OGI4OGU2YjEyMDVkMDIzZWZlOWQuLjdlZTJiZTZl
YzM5MDExODA1YjI0MTY1MWZhYTljMTgwNGI5ZjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogV2ViRGVidWdnZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICA6IERlYnVnZ2VyQWdlbnQoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQpAQCAtNTAsNCArNTAsNCBAQCB2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0RGVidWdnZXJBZ2VudChudWxscHRyKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRl
YnVnZ2VyQWdlbnQuaAppbmRleCAyNWFlYjEyNTBlZWY0MzgwMjQ0NGY1NThiYmU1ZGNjZTdiNjUx
MWY4Li43NzE4YTA5YTVkNmI2ZmNiMjk4NzkyOGZlZmU4YzY4YjM2M2M3MDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKQEAgLTI5LDI0ICsyOSwyOSBA
QAogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Cit9CisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBQYWdlQWdlbnQ7CisKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBXZWJEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3Bl
Y3Rvcjo6RGVidWdnZXJBZ2VudCB7CitjbGFzcyBXZWJEZWJ1Z2dlckFnZW50IDogcHVibGljIERl
YnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkRlYnVnZ2VyQWdlbnQp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYkRlYnVnZ2Vy
QWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdl
bnRzKik7CisgICAgV2ViRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXZWJD
b3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+V2ViRGVidWdnZXJBZ2Vu
dCgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJp
ZGU7CiAKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Cisg
ICAgV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwog
fTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAK
ICNlbmRpZiAvLyAhZGVmaW5lZChXZWJEZWJ1Z2dlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDlm
NGFmNDI2OTNlYzU3NTk1MzEzMzk0NDYwYjE5MDVkZmUwYWQ1ODcuLjA2ZWJmMmE5ODQzM2RiYzY0
NmYzY2Y0MjhkODI3ZGJiY2UwMzVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAj
aW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OldlYkluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0b3JFbnZp
cm9ubWVudCYgZW52aXJvbm1lbnQsIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBob3N0
KQogICAgIDogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGVudmlyb25tZW50LCBob3N0KQpAQCAtODEs
NCArODEsNCBAQCB2b2lkIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVk
U2NyaXB0c0ZvcihET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQu
cmVtb3ZlKHNjcmlwdFN0YXRlc1RvUmVtb3ZlW2ldKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggZThmYzQ1MjJhYjEyMTlh
N2EzMDU1NDNhZGQ5MjMxYTk4ZmYwYTA2OS4uNjJlYjQ0YTU0MWMxMGU1NTVlMjViMWIxZTY3ZTUw
NDQxODFiMWNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVj
dGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtMzEsMjcgKzMxLDI5IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIERPTVdpbmRvdzsKK30KKwor
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciB7CitjbGFzcyBX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyIHsKIHB1YmxpYzoKLSAgICBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JFbnZpcm9ubWVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dEhvc3Q+KTsKKyAgICBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdG9yRW52aXJvbm1l
bnQmLCBQYXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4pOwogICAgIHZpcnR1YWwgfldlYklu
amVjdGVkU2NyaXB0TWFuYWdlcigpIHsgfQogCi0gICAgQ29tbWFuZExpbmVBUElIb3N0KiBjb21t
YW5kTGluZUFQSUhvc3QoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRMaW5lQVBJSG9zdC5nZXQo
KTsgfQorICAgIFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0
KCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kTGluZUFQSUhvc3QuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpc2NhcmRJbmpl
Y3RlZFNjcmlwdHNGb3IoRE9NV2luZG93Kik7CisgICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3Jp
cHRzRm9yKFdlYkNvcmU6OkRPTVdpbmRvdyopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3Rl
ZFNjcmlwdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPENvbW1hbmRMaW5lQVBJ
SG9zdD4gbV9jb21tYW5kTGluZUFQSUhvc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbW1hbmRM
aW5lQVBJSG9zdD4gbV9jb21tYW5kTGluZUFQSUhvc3Q7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyQ29uc29sZUFnZW50LmNwcAppbmRleCBkYzFjYjc5ZGIwYjA5YmI3Y2VmNWI5MDhkNTUx
ZjcwYzMwNTA4ZDc0Li5jM2Y1OTAyOGI3ZmVmYjhhNDIyNDRmY2E4YmJmY2ZhOTZiOWZhYjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApA
QCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtlckNv
bnNvbGVBZ2VudC5oIgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiBXb3JrZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IFdlYkNvbnNvbGVBZ2Vu
dChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC00NSw0ICs0NSw0IEBAIHZvaWQgV29ya2VyQ29u
c29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvciwgaW50KQogICAg
IGVycm9yID0gQVNDSUlMaXRlcmFsKCJhZGRJbnNwZWN0ZWROb2RlIGlzIG5vdCBzdXBwb3J0ZWQg
Zm9yIHdvcmtlcnMiKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
Q29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFn
ZW50LmgKaW5kZXggODg5N2I1MGRlMDU4ZmJiMmNiZmU0OTI2YzM1OTkyZmI1Mjg4ZWJkMi4uZWEy
ZDM5M2E5ZDRhZDcxYjhlY2QyMjBlNTAxOTg1Mjc4ZmFlMjQwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaApAQCAtMzMsNyArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBXb3JrZXJDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJs
aWMgV2ViQ29uc29sZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJDb25z
b2xlQWdlbnQpOwpAQCAtNDgsNiArNDgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CiB9Owog
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2Vu
ZGlmIC8vICFkZWZpbmVkKFdvcmtlckNvbnNvbGVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDIyNWQ1NTNlOGJkZDgx
ZmNmYWI3YWFjZjY0Y2Q1MGFkNTAyODQyYzEuLmUyYzI5Mjg4YzNiZDU0YjhjMjU2Y2RhZWMxMWZl
MzJkZGY4NmQ1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAKICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1
ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTE1Niw0ICsx
NTYsNCBAQCB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gbXV0ZSBjb25zb2xlIGZvciB3b3JrZXJzLgogfQogCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IGQ4NzlkMTg5YTFmZmYw
NDBjY2ZkYjhlMjE2YWI5YTQwNzU4OTE4YzAuLjAzMzFkZmMyYTE2N2QxZWUwZmVjN2NkYmNiYTk0
Y2RlMDA0ODExZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyQWdlbnQuaApAQCAtMzUsMzQgKzM1LDM2IEBACiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZTsKIGNsYXNzIFdvcmtlclRocmVhZDsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IGNsYXNzIFdvcmtlckRlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViRGVidWdnZXJBZ2Vu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXJBZ2VudCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyRGVidWdnZXJBZ2Vu
dChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMq
LCBXb3JrZXJHbG9iYWxTY29wZSopOworICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyosIFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyRGVidWdnZXJBZ2VudCgpOwog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnZ2VyVGFza01vZGU7Ci0gICAgc3RhdGljIHZv
aWQgaW50ZXJydXB0QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhXb3JrZXJUaHJlYWQqKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKFdl
YkNvcmU6OldvcmtlclRocmVhZCopOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVuaW5n
U2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3Rl
bmluZ1NjcmlwdERlYnVnU2VydmVyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIm
IHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV9pbnNwZWN0
ZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ciBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlKiBt
X2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChXb3JrZXJE
ZWJ1Z2dlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5Njc0MDgzY2RlY2FkYzkxZTUwMzAyMjI3ZmRj
NGQxYTkxOGJlYTA0Li44ZGM0NWIxOTUyNTcwZGM5YmIxMmJmNDc3NWZjZDM4OWY4MTI0YTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmgKQEAgLTQxLDEzICs0MSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgV2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworY2xhc3MgV29ya2VyUnVudGltZUFnZW50OworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudDsKIAog
Y2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKTsKQEAgLTc1LDggKzc4LDggQEAgcHJpdmF0ZToKIAogICAgIFdv
cmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAgIFJlZlB0cjxJbnN0cnVt
ZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAg
V29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOworICAgIEluc3BlY3Rvcjo6V29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudDsK
ICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKICAgICBS
ZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBmZjUwMDdiZjA1Mjlj
MGM2ZDNlODc0NTlmZWFiYWY3NGQzYzg5Y2UyLi42MTk3OTczMzVkNDE5MDgxZjFmNWZiNTgwNDcw
Njg4ODhhNTljOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmNwcApAQCAtNDEsOSArNDEsOSBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogV29ya2Vy
UnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29w
ZSkKICAgICA6IFJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC01MiwxMiAr
NTIsMTIgQEAgV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmEKIHsKIH0KIAotdm9pZCBXb3JrZXJSdW50
aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChG
cm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9p
ZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
IApAQCAtMTA1LDQgKzEwNSw0IEBAIHZvaWQgV29ya2VyUnVudGltZUFnZW50OjpwYXVzZVdvcmtl
ckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0KQogICAgIH0gd2hpbGUgKHJl
c3VsdCA9PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQgJiYgbV9wYXVzZWQpOwogfQogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCBmMWZkOGU0OWU3
NjYxZTQ2N2I3Njc5NDc3YjgwNTk0OTNmOGE2MWRlLi41MjNjN2UzMDk2ZmE3MTI3OWMxMGFjZWNk
ZWRhOTI2NDk4NTVjOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1
bnRpbWVBZ2VudC5oCkBAIC0zNCwzMiArMzQsMzUgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3I6OlJ1bnRpbWVBZ2VudCB7CitjbGFzcyBXb3JrZXJSdW50aW1l
QWdlbnQgZmluYWwgOiBwdWJsaWMgUnVudGltZUFnZW50IHsKIHB1YmxpYzoKLSAgICBXb3JrZXJS
dW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJHbG9i
YWxTY29wZSopOworICAgIFdvcmtlclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
LCBXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRp
bWVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYXVzZVdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgdm9pZCBwYXVzZVdvcmtl
ckdsb2JhbFNjb3BlKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlKik7CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBp
bnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG11dGVD
b25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVy
cmlkZTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgUmVmUHRyPFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBib29sIG1fcGF1c2VkOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JQ
YWdlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCmluZGV4IDc4NDViNjFmYThkY2ZhZjlmNjdmYWEwZDk0MjVkMGY5YjJiNWQ2MTUu
LjhkODcxODk5YmJiYmQyZDUzM2E5OThhOTc5ZmYyYWYzNDdmMTUxMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC00OSw2ICs0OSw4
IEBACiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCit1c2luZyBJbnNwZWN0b3I6OldvcmtlckRlYnVnZ2VyQWdlbnQ7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyR2xvYmFsU2NvcGVQcm94eSogV29ya2VyR2xvYmFs
U2NvcGVQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247538</attachid>
            <date>2015-02-27 12:52:03 -0800</date>
            <delta_ts>2015-07-09 00:09:07 -0700</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-141620-20150227125149.patch</filename>
            <type>text/plain</type>
            <size>165328</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc5Y2FmNDBjNjc3MjMz
NWRkZWMyNjVlNzA5MTQ0MmEyNzQ0NWI3NC4uOGZlZGQ1MWVkMGFhMWFkZmU1MjU4NjM4ODUwYTdl
MDViOGRkZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDE1LTAyLTI3ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtb3ZlIFdlYkNvcmUgYWdlbnRzIHRvIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTYyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gbW92ZSBXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIgdG8gSW5zcGVjdG9yLiBEZWZlciBtb3Zpbmcgb3RoZXIKKyAgICAg
ICAgaGVscGVyIGNsYXNzZXMgdG8gYSBsYXRlciB0aW1lIHdoZW4gdGhvc2UgY2xhc3NlcyBhcmUg
bW9kZXJuaXplZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VyQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisKKzIwMTUtMDItMjcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndh
c2hpbmd0b24uZWR1PgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBJbnNwZWN0b3Ig
cHJlZml4ZXMgZnJvbSBpbnNwZWN0b3IgYWdlbnQgY2xhc3NlcwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjA4CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCmluZGV4
IGM3NTdkMTkwOWUxZTYyYWUwYjRmZmZjOThhMWRlYzE3ZTIxYzc0YjguLjk3ZTRlNGFlNzg0Nzhk
YjIyOTNjNWE1YzZlZDEyOGVmMWY5YzRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZWQoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgaW5zcGVjdChSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mJiBvYmplY3RUb0luc3BlY3QsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgaGludHMp
OworICAgIHZvaWQgaW5zcGVjdChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYmIG9iamVjdFRvSW5zcGVjdCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
JiBoaW50cyk7CiAgICAgdm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBWZWN0
b3I8U3RyaW5nPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKLSAgICBzdGQ6OnBhaXI8
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CisgICAgc3RkOjpwYWlyPFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9t
LmNwcAppbmRleCBkYTUyY2VjMmNmZGNjNzZhMWNkNDBkMmU0NWFlMDk1NjQ2NWUxZjc2Li5lMjJj
YTU2OTVkY2MyZjkyMjk3MmU5Mjc3Zjg1MDdlODQ2N2QwNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3Rl
ZE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHNjcmlwdFZhbHVlLmpzVmFsdWUo
KTsKIH0KIAotc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRXhlY1N0YXRl
KiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50TGlzdGVuZXJJbmZvJiBsaXN0
ZW5lckluZm8pCitzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhFeGVjU3Rh
dGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgSW5zcGVjdG9yOjpFdmVudExpc3Rl
bmVySW5mbyYgbGlzdGVuZXJJbmZvKQogewogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7CiAgICAgc2l6ZV90IGhhbmRsZXJzQ291bnQgPSBs
aXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3Rvci5zaXplKCk7CkBAIC0xMDksNyArMTA5LDcg
QEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKLSAgICBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+IGxpc3RlbmVyc0FycmF5OworICAgIFZl
Y3RvcjxJbnNwZWN0b3I6OkV2ZW50TGlzdGVuZXJJbmZvPiBsaXN0ZW5lcnNBcnJheTsKICAgICBp
bXBsKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVyc0FycmF5KTsKIAogICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAppbmRleCA2ZTNjNTQ1ZWU4
Y2ZjZDYyYTRlMTJiOGViYzVjOTZjMGQ1ZDVkZmVhLi43MDU4MDBhYWZhYjllMWMwMWE0MTM2MDY4
ZDQwMjNkOWFjYmI5NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5oCkBAIC00MiwyMiArNDIsMjIgQEAgY2xhc3MgU2NyaXB0VmFsdWU7CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgQ29uc29sZUFnZW50OworY2xhc3MgRGF0YWJhc2VB
Z2VudDsKK2NsYXNzIERPTUFnZW50OworY2xhc3MgRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1
ZTsKKworc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERhdGFiYXNlOwotY2xhc3MgRGF0YWJhc2VBZ2VudDsKLWNsYXNzIERPTUFnZW50
OwotY2xhc3MgRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0b3JhZ2U7CiAK
LXN0cnVjdCBFdmVudExpc3RlbmVySW5mbzsKLQogY2xhc3MgQ29tbWFuZExpbmVBUElIb3N0IDog
cHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZExpbmVBUElIb3N0PiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxDb21tYW5kTGluZUFQSUhvc3Q+IGNyZWF0ZSgpOwpAQCAtNjUsOSArNjUsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGluaXQoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogaW5zcGVj
dG9yQWdlbnQKICAgICAgICAgLCBJbnNwZWN0b3I6OkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50
Ci0gICAgICAgICwgRE9NQWdlbnQqIGRvbUFnZW50Ci0gICAgICAgICwgRE9NU3RvcmFnZUFnZW50
KiBkb21TdG9yYWdlQWdlbnQKLSAgICAgICAgLCBEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50
CisgICAgICAgICwgSW5zcGVjdG9yOjpET01BZ2VudCogZG9tQWdlbnQKKyAgICAgICAgLCBJbnNw
ZWN0b3I6OkRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50CisgICAgICAgICwgSW5zcGVj
dG9yOjpEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50CiAgICAgICAgICkKICAgICB7CiAgICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudDsKQEAgLTkyLDcgKzkyLDcgQEAg
cHVibGljOgogICAgIEluc3BlY3RhYmxlT2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QoKTsKICAgICB2
b2lkIGluc3BlY3RJbXBsKFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiYmIG9iamVj
dFRvSW5zcGVjdCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+JiYgaGludHMpOwog
Ci0gICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0ltcGwoTm9kZSosIFZlY3RvcjxFdmVudExpc3Rl
bmVySW5mbz4mIGxpc3RlbmVyc0FycmF5KTsKKyAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzSW1w
bChOb2RlKiwgVmVjdG9yPEluc3BlY3Rvcjo6RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNB
cnJheSk7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VJZEltcGwoRGF0YWJhc2UqKTsKICAgICBTdHJp
bmcgc3RvcmFnZUlkSW1wbChTdG9yYWdlKik7CkBAIC0xMDIsOSArMTAyLDkgQEAgcHJpdmF0ZToK
IAogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAg
SW5zcGVjdG9yOjpDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50OwotICAgIERPTUFnZW50KiBt
X2RvbUFnZW50OwotICAgIERPTVN0b3JhZ2VBZ2VudCogbV9kb21TdG9yYWdlQWdlbnQ7Ci0gICAg
RGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OworICAgIEluc3BlY3Rvcjo6RE9NQWdlbnQq
IG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFn
ZUFnZW50OworICAgIEluc3BlY3Rvcjo6RGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RhYmxlT2JqZWN0PiBtX2luc3BlY3RlZE9iamVj
dDsgLy8gJDAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDgyYzY3ZDI0ZTk5ZTM5ZGU1
NzdkOGE0MmVmOTNkOTIwYTEwZDA4NjcuLmVjZGVjNjFlZDVlMDljNjNlMjI0YmJmZDg5NDYxYzAx
ODhiN2JkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogQXBwbGljYXRpb25DYWNoZUFnZW50OjpBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZUFnZW50KiBwYWdlQWdlbnQp
CiAgICAgOiBXZWJBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCkBAIC01MSwxMSArNTEsMTEgQEAgQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0EKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
cjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwor
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgQXBwbGljYXRp
b25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpAQCAt
MTk1LDQgKzE5NSw0IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uCiAgICAgICAgIC5yZWxlYXNl
KCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDUyYTdhM2U1YTlkM2QxNzU4N2NiNmVmOGUwZDgzZjE2
YmZiZjVmY2YuLjFiOGRmNGRmNDRhMGNjOTA4ZjkxOTJmZGU0MzVlZTFmYzNhZGM4ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKQEAgLTMxLDMyICszMSwzMCBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKK30KKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CisKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFz
cyBJbnNwZWN0b3JWYWx1ZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFt
ZTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBQYWdlOwogY2xhc3MgUGFnZUFn
ZW50OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2Vu
dEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworY2xhc3MgQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIFdl
YkFnZW50QmFzZSwgcHVibGljIEFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50Kik7CisgICAgQXBwbGljYXRpb25DYWNo
ZUFnZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlQWdlbnQqKTsKICAgICB2
aXJ0dWFsIH5BcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFt
ZSopOworICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhXZWJDb3JlOjpGcmFt
ZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNjUsMTUgKzYzLDE1IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiwgY29uc3QgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkNhY2hlSW5mbyYpOwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYpOwotICAgIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxk
T2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpSZXNvdXJjZUluZm8mKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlKGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0
JiwgY29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOworICAg
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6UmVzb3VyY2VJbmZvTGlzdCYpOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpSZXNvdXJjZUluZm8mKTsKIAotICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhE
b2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIFN0cmluZyBmcmFtZUlkKTsKKyAgICBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJp
bmcmLCBTdHJpbmcgZnJhbWVJZCk7CiAKICAgICBQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkFwcGxp
Y2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4
IGE0YWZiNzYxMWQ4MWFmMjczNjg0MThkZGE5Zjc3ZDU1ODQwMjc5NzYuLjZlYTIxZDY4Zjg0OThh
M2QzMWYzYjViMGFlMTI2ZjU3YmZlZGFkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjAsOSArNjAsOSBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBlbnVtIEZv
cmNlUHNldWRvQ2xhc3NGbGFncyB7CiAgICAgUHNldWRvQ2xhc3NOb25lID0gMCwKQEAgLTM1MSwx
MyArMzUxLDEzIEBAIENTU0FnZW50Ojp+Q1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZv
aWQgQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIENTU0FnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIENTU0Fn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCmluZGV4IDUxNDZiOGQzYWFlMmQzNTBiZGQ2NTBjNTVmNjg4ZjhmY2QzZGExM2MuLmJhODUy
MGRhM2Y3NGJjODhlOTUzOTU1MGIwMjI4MTU4YjVhNWIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0zOCw0MCArMzgsMzYgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgQ1NTRnJvbnRlbmREaXNwYXRjaGVyOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xh
c3MgQ1NTUnVsZTsKIGNsYXNzIENTU1J1bGVMaXN0OwotY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlv
bjsKIGNsYXNzIENTU1N0eWxlUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1
bWVudDsKLWNsYXNzIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb247CiBjbGFzcyBFbGVtZW50
OwotY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7Ci1jbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBOb2RlTGlzdDsKIGNs
YXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVJ1bGU7Cit9CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworCitjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKK2NsYXNzIENTU0Zyb250
ZW5kRGlzcGF0Y2hlcjsKIAogY2xhc3MgQ1NTQWdlbnQgZmluYWwKICAgICA6IHB1YmxpYyBXZWJB
Z2VudEJhc2UKICAgICAsIHB1YmxpYyBET01BZ2VudDo6RE9NTGlzdGVuZXIKLSAgICAsIHB1Ymxp
YyBJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgotICAgICwgcHVibGljIElu
c3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKKyAgICAsIHB1YmxpYyBDU1NCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
OjpMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTQWdlbnQpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIElubGluZVN0eWxlT3Zl
cnJpZGVTY29wZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbmxpbmVTdHlsZU92ZXJyaWRlU2Nv
cGUoU2VjdXJpdHlDb250ZXh0KiBjb250ZXh0KQorICAgICAgICBJbmxpbmVTdHlsZU92ZXJyaWRl
U2NvcGUoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAgOiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeShjb250ZXh0LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkK
ICAgICAgICAgewogICAgICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPnNldE92ZXJy
aWRlQWxsb3dJbmxpbmVTdHlsZSh0cnVlKTsKQEAgLTgzLDMwICs3OSwzMCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSog
bV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgICAgIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeSogbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgfTsKIAotICAgIENTU0FnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBET01BZ2VudCopOworICAgIENTU0FnZW50KFdlYkNvcmU6
Okluc3RydW1lbnRpbmdBZ2VudHMqLCBET01BZ2VudCopOwogICAgIHZpcnR1YWwgfkNTU0FnZW50
KCk7CiAKLSAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlJik7
CisgICAgc3RhdGljIFdlYkNvcmU6OkNTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoV2ViQ29y
ZTo6Q1NTUnVsZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5h
bWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgdm9pZCByZWdpb25PdmVyc2V0Q2hh
bmdlZChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogICAg
IHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFj
a3MuCiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwotICAgIHZvaWQgZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCB3aWxs
UmVtb3ZlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBk
aWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAg
dm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0
TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVu
dCA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOwot
ICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSk7CisgICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coV2ViQ29yZTo6RG9jdW1lbnQm
LCBXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cmKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVOYW1lZEZs
b3coV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cmKTsKKyAgICB2
b2lkIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpX
ZWJLaXROYW1lZEZsb3cmKTsKKyAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cmLCBXZWJD
b3JlOjpOb2RlJiBjb250ZW50RWxlbWVudCwgV2ViQ29yZTo6Tm9kZSogbmV4dENvbnRlbnRFbGVt
ZW50ID0gbnVsbHB0cik7CisgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cmLCBXZWJD
b3JlOjpOb2RlJiBjb250ZW50RWxlbWVudCk7CisgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKFdl
YkNvcmU6OkVsZW1lbnQmLCBXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGlubGlu
ZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJp
YnV0ZXMpIG92ZXJyaWRlOwpAQCAtMTI5LDQyICsxMjUsNDIgQEAgcHJpdmF0ZToKICAgICBjbGFz
cyBTZXRSdWxlU2VsZWN0b3JBY3Rpb247CiAgICAgY2xhc3MgQWRkUnVsZUFjdGlvbjsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Pj4gSWRU
b0luc3BlY3RvclN0eWxlU2hlZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlU2hlZXQq
LCBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+IENTU1N0eWxlU2hlZXRUb0luc3BlY3RvclN0
eWxlU2hlZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCBSZWZQdHI8SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPj4gTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gYm9n
dXMgInN0eWxlc2hlZXRzIiB3aXRoIGVsZW1lbnRzJyBpbmxpbmUgc3R5bGVzCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxEb2N1bWVudD4sIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Pj4g
RG9jdW1lbnRUb1ZpYUluc3BlY3RvclN0eWxlU2hlZXQ7IC8vICJ2aWEgaW5zcGVjdG9yIiBzdHls
ZXNoZWV0cworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0Pj4gSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqLCBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldD4+IENTU1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6Ok5vZGUqLCBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPj4gTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gYm9n
dXMgInN0eWxlc2hlZXRzIiB3aXRoIGVsZW1lbnRzJyBpbmxpbmUgc3R5bGVzCisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudD4sIFJlZlB0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0Pj4gRG9jdW1lbnRUb1ZpYUluc3BlY3RvclN0eWxlU2hlZXQ7IC8vICJ2
aWEgaW5zcGVjdG9yIiBzdHlsZXNoZWV0cwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIHVuc2ln
bmVkPiBOb2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogCiAgICAgdm9pZCByZXNldE5vblBlcnNp
c3RlbnREYXRhKCk7Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBhc0lu
c3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCk7Ci0gICAgRWxlbWVudCogZWxlbWVu
dEZvcklkKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7Ci0gICAgaW50IGRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVl
dHMoQ1NTU3R5bGVTaGVldCosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKLQotICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKLSAgICBJbnNwZWN0b3JT
dHlsZVNoZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiwgYm9vbCBjcmVhdGVJ
ZkFic2VudCk7Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklk
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5
bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSos
IFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0
cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVn
aW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3VtZW50Tm9kZUlk
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KTsK
KyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkKTsKKyAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoV2ViQ29yZTo6
RG9jdW1lbnQqKTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0KiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOworCisgICAgV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldCogYmluZFN0eWxlU2hlZXQoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldCopOworICAgIFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3RvclN0eWxlU2hlZXQoV2ViQ29y
ZTo6RG9jdW1lbnQqLCBib29sIGNyZWF0ZUlmQWJzZW50KTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4g
ZGV0ZWN0T3JpZ2luKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBXZWJD
b3JlOjpEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoV2ViQ29yZTo6U3R5bGVS
dWxlKiwgV2ViQ29yZTo6U3R5bGVSZXNvbHZlciYsIFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1
bGUoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlKik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJh
eUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlN0eWxlUnVs
ZT4+JiwgV2ViQ29yZTo6U3R5bGVSZXNvbHZlciYsIFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JB
dHRyaWJ1dGVzU3R5bGUoV2ViQ29yZTo6RWxlbWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1aWxk
QXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiYm
LCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJD
b3JlOjpXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8gRE9N
QWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZURvY3VtZW50KERvY3VtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZURPTU5vZGUoTm9kZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlE
T01BdHRyKEVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9j
dW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlRE9NTm9kZShXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vZGlmeURPTUF0dHIoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwogCiAgICAgLy8g
Q1NTQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIHN0eWxl
U2hlZXRDaGFuZ2VkKEluc3BlY3RvclN0eWxlU2hlZXQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVTaGVldENoYW5nZWQoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldCopIG92
ZXJyaWRlOwogCiAgICAgdm9pZCByZXNldFBzZXVkb1N0YXRlcygpOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q1NTRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8Q1NTQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAKICAgICBJ
ZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0OwpAQCAtMTc4
LDYgKzE3NCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKIH07CiAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5k
aWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQ1NTQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDc5NjM5NTM1YTYwZmVmOWVmMTY1
MTNlN2QyMDY2Y2ZmZDVkMzBiOTMuLjRjY2ZkZTdmMWViMjdlMDQwYmZkMmI4MjQ4NDk2YWY2OWM3
MWU4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtNDMsOSArNDMsMTYgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBC
YWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIERPTUFnZW50OworY2xhc3MgRE9NRGVidWdnZXJBZ2Vu
dDsKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OworY2xhc3MgUGFnZUFnZW50OworY2xhc3MgUGFnZURlYnVnZ2VyQWdl
bnQ7CitjbGFzcyBSZXNvdXJjZUFnZW50OworY2xhc3MgVGltZWxpbmVBZ2VudDsKK2NsYXNzIFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlcjsKIAogbmFtZXNwYWNlIFByb3RvY29sIHsKIG5hbWVzcGFj
ZSBPdmVybGF5VHlwZXMgewpAQCAtNTUsMjMgKzYyLDE1IEBAIGNsYXNzIE5vZGVIaWdobGlnaHRE
YXRhOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwotY2xhc3MgRE9NQWdlbnQ7Ci1jbGFzcyBET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7Ci1jbGFz
cyBQYWdlQWdlbnQ7Ci1jbGFzcyBQYWdlRGVidWdnZXJBZ2VudDsKLWNsYXNzIFJlc291cmNlQWdl
bnQ7Ci1jbGFzcyBUaW1lbGluZUFnZW50OwotY2xhc3MgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OwogCiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRW52aXJvbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckNvbnRyb2xsZXIpOwpAQCAtMTI2LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Vt
ZSgpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2luc3BlY3RvckNsaWVudDsgfQotICAgIFBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6OlBhZ2VBZ2VudCogcGFn
ZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNDEsMTYgKzE0MCwxNiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0Fn
ZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OldlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3Zl
cmxheTsKIAogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7
Ci0gICAgRE9NQWdlbnQqIG1fZG9tQWdlbnQ7Ci0gICAgUmVzb3VyY2VBZ2VudCogbV9yZXNvdXJj
ZUFnZW50OwotICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgUGFnZURlYnVnZ2VyQWdl
bnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBET01EZWJ1Z2dlckFnZW50KiBtX2RvbURlYnVnZ2Vy
QWdlbnQ7Ci0gICAgVGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OworICAgIEluc3BlY3Rv
cjo6RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpSZXNvdXJjZUFnZW50KiBt
X3Jlc291cmNlQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpQYWdlQWdlbnQqIG1fcGFnZUFnZW50Owor
ICAgIEluc3BlY3Rvcjo6UGFnZURlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyAgICBJ
bnNwZWN0b3I6OkRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKKyAgICBJbnNw
ZWN0b3I6OlRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKQEAgLTE2OCw2ICsxNjcs
NiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JDb250cm9sbGVyX2gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA3MDA0M2Q1OTZkZTY0
MjVmNDM1NzEyNTg0NGJiNmIzZGY4YjgxN2I3Li44ZDVjOGMzODVmZGE2ZGVjOTg0NzUxMWQ1M2I4
NWRhNmVkNjc1ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTk0LDkgKzk0LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
QEAgLTIyMSwxMCArMjIxLDEwIEBAIERPTUFnZW50Ojp+RE9NQWdlbnQoKQogICAgIEFTU0VSVCgh
bV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBE
T01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9N
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IERPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogCiAgICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JIaXN0b3J5PigpOwogICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0
b3I+KG1faGlzdG9yeS5nZXQoKSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBET01BZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZEMKICAgICAgICAgZm9jdXNOb2RlKCk7CiB9CiAKLXZvaWQgRE9NQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3Zv
aWQgRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIuY2xlYXIoKTsKQEAgLTIwMTYsNCArMjAxNiw0IEBAIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIERPTUFnZW50Ojpub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIE5vZGUqCiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgp
LCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwg
bm9kZSkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5k
ZXggOTRjNjJlZTAzNTI5NzNjYWM1YjBlY2EzOTRkNjcwZTFhZGRjNjBkNS4uZDAyOGM2Mzk1YTRl
MzUzYzNkOTgxYTFlMzA4YmFhNjI0M2EzY2NmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQ5LDE0ICs0OSw4IEBAIG5hbWVzcGFjZSBEZXBy
ZWNhdGVkIHsKIGNsYXNzIFNjcmlwdFZhbHVlOwogfQogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsK
LWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewot
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwotY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTY1
LDMzICs1OSwzNSBAQCBjbGFzcyBFdmVudDsKIGNsYXNzIEluc3BlY3Rvckhpc3Rvcnk7CiBjbGFz
cyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKLWNsYXNzIEhUTUxFbGVt
ZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIE5hbWVOb2RlTWFwOwogY2xh
c3MgTm9kZTsKLWNsYXNzIFBhZ2VBZ2VudDsKLWNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0
ZVRhc2s7CiBjbGFzcyBTaGFkb3dSb290OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmlnOworfQor
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK2Ns
YXNzIFBhZ2VBZ2VudDsKK2NsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogdHlwZWRlZiBpbnQgQmFja2VuZE5vZGVJZDsKIAog
c3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKLSAgICBFdmVudExpc3RlbmVySW5mbyhOb2RlKiBu
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZlbnRMaXN0ZW5lclZl
Y3RvciYgZXZlbnRMaXN0ZW5lclZlY3RvcikKKyAgICBFdmVudExpc3RlbmVySW5mbyhXZWJDb3Jl
OjpOb2RlKiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lclZlY3RvciYgZXZlbnRMaXN0ZW5lclZlY3RvcikKICAgICAgICAgOiBu
b2RlKG5vZGUpCiAgICAgICAgICwgZXZlbnRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgLCBldmVu
dExpc3RlbmVyVmVjdG9yKGV2ZW50TGlzdGVuZXJWZWN0b3IpCiAgICAgewogICAgIH0KIAotICAg
IE5vZGUqIG5vZGU7CisgICAgV2ViQ29yZTo6Tm9kZSogbm9kZTsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcgZXZlbnRUeXBlOwotICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0
ZW5lclZlY3RvcjsKKyAgICBjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50
TGlzdGVuZXJWZWN0b3I7CiB9OwogCi1jbGFzcyBET01BZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBET01BZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBET01C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERPTUFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTk5LDIwICs5
NSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRPTUxpc3RlbmVyKCkKICAgICAgICAg
ewogICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1
bWVudCopID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSop
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURvY3VtZW50KFdlYkNvcmU6OkRvY3Vt
ZW50KikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShXZWJDb3Jl
OjpOb2RlKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihXZWJD
b3JlOjpFbGVtZW50KikgPSAwOwogICAgIH07CiAKLSAgICBET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgUGFnZUFnZW50KiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJ
bnNwZWN0b3JPdmVybGF5Kik7CisgICAgRE9NQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50cyosIFBhZ2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIFdlYkNvcmU6Okluc3Bl
Y3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5ET01BZ2VudCgpOwogCi0gICAgc3RhdGljIFN0
cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvRXJyb3JTdHJpbmcoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1l
bnRzKCk7CisgICAgVmVjdG9yPFdlYkNvcmU6OkRvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CiAgICAg
dm9pZCByZXNldCgpOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQg
Zm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgpAQCAtMTUyLDEyNyArMTQ4LDEyNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5vZGUqLCBWZWN0b3I8RXZlbnRM
aXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3JzKTsKKyAg
ICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKFdlYkNvcmU6Ok5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0
ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3JzKTsKIAogCiAg
ICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KLSAgICB2b2lkIGRpZElu
c2VydERPTU5vZGUoTm9kZSYpOwotICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7Ci0g
ICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7Ci0gICAgdm9pZCBkaWRNb2Rp
ZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChD
aGFyYWN0ZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUmKTsK
LSAgICB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsK
LSAgICB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsK
LSAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoTm9kZSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9h
ZChEb2N1bWVudCopOwotICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqKTsKKyAg
ICB2b2lkIGRpZEluc2VydERPTU5vZGUoV2ViQ29yZTo6Tm9kZSYpOworICAgIHZvaWQgZGlkUmVt
b3ZlRE9NTm9kZShXZWJDb3JlOjpOb2RlJik7CisgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihX
ZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKFdlYkNvcmU6
OkVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpOworICAgIHZvaWQgZGlkUmVtb3ZlRE9NQXR0cihXZWJDb3JlOjpFbGVtZW50JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChX
ZWJDb3JlOjpDaGFyYWN0ZXJEYXRhJik7CisgICAgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRy
KFdlYkNvcmU6Ok5vZGUmKTsKKyAgICB2b2lkIGRpZFB1c2hTaGFkb3dSb290KFdlYkNvcmU6OkVs
ZW1lbnQmIGhvc3QsIFdlYkNvcmU6OlNoYWRvd1Jvb3QmKTsKKyAgICB2b2lkIHdpbGxQb3BTaGFk
b3dSb290KFdlYkNvcmU6OkVsZW1lbnQmIGhvc3QsIFdlYkNvcmU6OlNoYWRvd1Jvb3QmKTsKKyAg
ICBib29sIGhhbmRsZVRvdWNoRXZlbnQoV2ViQ29yZTo6Tm9kZSYpOworICAgIHZvaWQgZGlkQ29t
bWl0TG9hZChXZWJDb3JlOjpEb2N1bWVudCopOworICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0
ZWQoV2ViQ29yZTo6RnJhbWUqKTsKIAogICAgIC8vIENhbGxiYWNrcyB0aGF0IGRvbid0IGRpcmVj
dGx5IGNvcnJlc3BvbmQgdG8gYW4gaW5zdHJ1bWVudGF0aW9uIGVudHJ5IHBvaW50LgotICAgIHZv
aWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHNldERvY3VtZW50KFdlYkNvcmU6
OkRvY3VtZW50Kik7CiAgICAgdm9pZCByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIHZvaWQg
bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpOwogCi0gICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUlu
dmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKTsKKyAgICB2b2lkIHN0
eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkVsZW1lbnQqPiYg
ZWxlbWVudHMpOwogCi0gICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyYsIGlu
dCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOwotICAgIE5vZGUqIG5vZGVGb3JJZChpbnQgbm9kZUlk
KTsKLSAgICBpbnQgYm91bmROb2RlSWQoTm9kZSopOworICAgIGludCBwdXNoTm9kZVRvRnJvbnRl
bmQoRXJyb3JTdHJpbmcmLCBpbnQgZG9jdW1lbnROb2RlSWQsIFdlYkNvcmU6Ok5vZGUqKTsKKyAg
ICBXZWJDb3JlOjpOb2RlKiBub2RlRm9ySWQoaW50IG5vZGVJZCk7CisgICAgaW50IGJvdW5kTm9k
ZUlkKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVy
Kik7Ci0gICAgQmFja2VuZE5vZGVJZCBiYWNrZW5kTm9kZUlkRm9yTm9kZShOb2RlKiwgY29uc3Qg
U3RyaW5nJiBub2RlR3JvdXApOworICAgIEJhY2tlbmROb2RlSWQgYmFja2VuZE5vZGVJZEZvck5v
ZGUoV2ViQ29yZTo6Tm9kZSosIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKTsKIAotICAgIHN0YXRp
YyBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgU3RyaW5n
IGRvY3VtZW50VVJMU3RyaW5nKFdlYkNvcmU6OkRvY3VtZW50Kik7CiAKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXNvbHZlTm9kZShOb2Rl
KiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2ZU5vZGUoV2ViQ29yZTo6Tm9kZSos
IGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzcygp
OwotICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYs
IHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwotICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CisgICAg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CisgICAgdm9pZCBpbnNwZWN0KFdlYkNvcmU6Ok5v
ZGUqKTsKICAgICB2b2lkIGZvY3VzTm9kZSgpOwogCi0gICAgSW5zcGVjdG9ySGlzdG9yeSogaGlz
dG9yeSgpIHsgcmV0dXJuIG1faGlzdG9yeS5nZXQoKTsgfQorICAgIFdlYkNvcmU6Okluc3BlY3Rv
ckhpc3RvcnkqIGhpc3RvcnkoKSB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIC8v
IFdlIHJlcHJlc2VudCBlbWJlZGRlZCBkb21zIGFzIGEgcGFydCBvZiB0aGUgc2FtZSBoaWVyYXJj
aHkuIEhlbmNlIHdlIHRyZWF0IGNoaWxkcmVuIG9mIGZyYW1lIG93bmVycyBkaWZmZXJlbnRseS4K
ICAgICAvLyBXZSBhbHNvIHNraXAgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGNvbmRpdGlvbmFsbHku
IEZvbGxvd2luZyBtZXRob2RzIGVuY2Fwc3VsYXRlIHRoZXNlIHNwZWNpZmljcy4KLSAgICBzdGF0
aWMgTm9kZSogaW5uZXJGaXJzdENoaWxkKE5vZGUqKTsKLSAgICBzdGF0aWMgTm9kZSogaW5uZXJO
ZXh0U2libGluZyhOb2RlKik7Ci0gICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNTaWJsaW5n
KE5vZGUqKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgaW5uZXJDaGlsZE5vZGVDb3VudChOb2RlKik7
Ci0gICAgc3RhdGljIE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKik7Ci0gICAgc3RhdGljIGJv
b2wgaXNXaGl0ZXNwYWNlKE5vZGUqKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Tm9kZSogaW5uZXJG
aXJzdENoaWxkKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Tm9kZSogaW5u
ZXJOZXh0U2libGluZyhXZWJDb3JlOjpOb2RlKik7CisgICAgc3RhdGljIFdlYkNvcmU6Ok5vZGUq
IGlubmVyUHJldmlvdXNTaWJsaW5nKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaW5uZXJDaGlsZE5vZGVDb3VudChXZWJDb3JlOjpOb2RlKik7CisgICAgc3RhdGljIFdlYkNv
cmU6Ok5vZGUqIGlubmVyUGFyZW50Tm9kZShXZWJDb3JlOjpOb2RlKik7CisgICAgc3RhdGljIGJv
b2wgaXNXaGl0ZXNwYWNlKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIE5vZGUqIGFzc2VydE5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKLSAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7Ci0gICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CisgICAgV2ViQ29yZTo6Tm9kZSogYXNzZXJ0Tm9kZShF
cnJvclN0cmluZyYsIGludCBub2RlSWQpOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIGFzc2VydEVs
ZW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKKyAgICBXZWJDb3JlOjpEb2N1bWVudCog
YXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKIAotICAgIHN0YXRpYyBO
b2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSk7Ci0gICAgc3Rh
dGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgTm9kZSopOworICAgIHN0YXRpYyBXZWJDb3JlOjpOb2RlKiBzY3JpcHRWYWx1ZUFzTm9k
ZShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSk7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgV2ViQ29yZTo6Tm9kZSop
OwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgUGFnZUFn
ZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQogCiBwcml2YXRlOgotICAg
IHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVj
dChFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QpOworICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyYs
IGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zy
b21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KLSAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwotICAgIGludCBi
aW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOwotICAgIHZvaWQgdW5iaW5kKE5vZGUqLCBOb2RlVG9J
ZE1hcCopOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm9kZT4sIGludD4g
Tm9kZVRvSWRNYXA7CisgICAgaW50IGJpbmQoV2ViQ29yZTo6Tm9kZSosIE5vZGVUb0lkTWFwKik7
CisgICAgdm9pZCB1bmJpbmQoV2ViQ29yZTo6Tm9kZSosIE5vZGVUb0lkTWFwKik7CiAKLSAgICBO
b2RlKiBhc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKLSAgICBF
bGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsK
KyAgICBXZWJDb3JlOjpOb2RlKiBhc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkKTsKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKIAotICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KE5vZGUqKTsKKyAgICBpbnQgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChXZWJDb3JlOjpOb2RlKik7
CiAgICAgdm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRo
ID0gMSk7CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsKLSAgICB2
b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50MzJfdCByb290TWFz
aywgYm9vbCB2YWx1ZSk7CisgICAgYm9vbCBoYXNCcmVha3BvaW50KFdlYkNvcmU6Ok5vZGUqLCBp
bnQgdHlwZSk7CisgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoV2ViQ29yZTo6Tm9k
ZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwogCi0gICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQg
ZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7Ci0gICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0
Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vz
c2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiYpOworICAgIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShXZWJDb3JlOjpOb2RlKiwgaW50
IGRlcHRoLCBOb2RlVG9JZE1hcCopOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoV2ViQ29yZTo6RWxlbWVu
dCopOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oV2ViQ29yZTo6
Tm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CisgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RG
b3JFdmVudExpc3RlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFdlYkNvcmU6Ok5vZGUqLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4oUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYmKTsKICAgICAKLSAgICBOb2RlKiBub2RlRm9y
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25z
dCBTdHJpbmcmIG9iamVjdElkKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBub2RlRm9yUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpOworICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25z
dCBTdHJpbmcmIG9iamVjdElkKTsKIAogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CiAKLSAg
ICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBjb25zdCBib29s
KiB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIG91dGxpbmVDb2xv
ciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIFBhZ2VBZ2VudCogbV9w
YWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKKyAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIFdlYkNv
cmU6Okluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOwogICAgIE5vZGVUb0lkTWFwIG1f
ZG9jdW1lbnROb2RlVG9JZE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBC
YWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxXZWJDb3JlOjpOb2RlPiwgQmFja2VuZE5vZGVJZD4gTm9kZVRvQmFja2VuZElkTWFwOwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBOb2RlVG9CYWNrZW5kSWRNYXA+IG1fbm9kZUdyb3VwVG9CYWNr
ZW5kSWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGluZyBub2Rlcy4K
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGluZ05vZGVU
b0lkTWFwczsKLSAgICBIYXNoTWFwPGludCwgTm9kZSo+IG1faWRUb05vZGU7CisgICAgSGFzaE1h
cDxpbnQsIFdlYkNvcmU6Ok5vZGUqPiBtX2lkVG9Ob2RlOwogICAgIEhhc2hNYXA8aW50LCBOb2Rl
VG9JZE1hcCo+IG1faWRUb05vZGVzTWFwOwogICAgIEhhc2hTZXQ8aW50PiBtX2NoaWxkcmVuUmVx
dWVzdGVkOwotICAgIEhhc2hNYXA8QmFja2VuZE5vZGVJZCwgc3RkOjpwYWlyPE5vZGUqLCBTdHJp
bmc+PiBtX2JhY2tlbmRJZFRvTm9kZTsKKyAgICBIYXNoTWFwPEJhY2tlbmROb2RlSWQsIHN0ZDo6
cGFpcjxXZWJDb3JlOjpOb2RlKiwgU3RyaW5nPj4gbV9iYWNrZW5kSWRUb05vZGU7CiAgICAgaW50
IG1fbGFzdE5vZGVJZDsKICAgICBCYWNrZW5kTm9kZUlkIG1fbGFzdEJhY2tlbmROb2RlSWQ7Ci0g
ICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBTZWFyY2hSZXN1bHRzOworICAgIFJlZlB0cjxXZWJD
b3JlOjpEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6Ok5vZGU+Pj4gU2VhcmNoUmVzdWx0czsKICAgICBTZWFyY2hS
ZXN1bHRzIG1fc2VhcmNoUmVzdWx0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKLSAgICBSZWZQdHI8
Tm9kZT4gbV9ub2RlVG9Gb2N1czsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9ub2RlVG9G
b2N1czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkhpZ2hsaWdodENvbmZpZz4gbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZzsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpET01FZGl0b3I+IG1fZG9tRWRpdG9yOwogICAgIGJvb2wg
bV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlmaWVkRXZlbnQ7CiAgICAgYm9vbCBtX2RvY3VtZW50UmVx
dWVzdGVkOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JET01BZ2VudF9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDc3Y2ZkMzI0NjAxMDJlY2YyMmJhNjVjY2RhNGQzOGJhN2YwNTk1NzMuLjU4NTlk
MzhhNDc1ZTNhNmU1NDA3YTgxNzYxYWNiOTNjYmIxOWViNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU1
LDkgKzU1LDkgQEAgY29uc3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7
CiAKIH0KIAotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogRE9N
RGVidWdnZXJBZ2VudDo6RE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBET01BZ2VudCogZG9tQWdlbnQsIERlYnVnZ2VyQWdlbnQqIGRlYnVn
Z2VyQWdlbnQpCiAgICAgOiBXZWJBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBET01EZWJ1
Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERPTURlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IERPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQordm9pZCBET01E
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIApAQCAtMTcwLDcgKzE3
MCw3IEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2Rl
JiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBBdHRyaWJ1dGVNb2RpZmllZCkp
IHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBBdHRy
aWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAtMjcwLDcgKzI3MCw3
IEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50
KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCkpIHsKICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChwYXJlbnQsIFN1YnRyZWVN
b2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5icmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBX
VEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQogCkBAIC0yODAsMTEgKzI4MCwxMSBAQCB2
b2lkIERPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAg
aWYgKGhhc0JyZWFrcG9pbnQoJm5vZGUsIE5vZGVSZW1vdmVkKSkgewogICAgICAgICBSZWY8SW5z
cGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZl
bnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5z
cGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92
ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRh
KSk7CiAgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9k
ZSwgU3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVu
dERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZv
ckRPTUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7
Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0K
IApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURP
TUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmZWxlbWVudCwg
QXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50
RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0
KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0
YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9
CiB9CiAKQEAgLTM2Nyw5ICszNjcsOSBAQCB2b2lkIERPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25O
YXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJgogICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50TmFtZSIsIGZ1bGxFdmVudE5hbWUpOwog
ICAgIGlmIChzeW5jaHJvbm91cykKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dy
YW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExp
c3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlz
dGVuZXIsIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIs
IFdURjo6bW92ZShldmVudERhdGEpKTsKIH0KIAogdm9pZCBET01EZWJ1Z2dlckFnZW50OjpzZXRY
SFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC00MTIsNyAr
NDEyLDcgQEAgdm9pZCBET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgdXJsKQogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFr
cG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygidXJs
IiwgdXJsKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0
YSkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogfQogCiB2b2lk
IERPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKQEAgLTQyMSw0ICs0MjEsNCBAQCB2b2lkIERPTURl
YnVnZ2VyQWdlbnQ6OmNsZWFyKCkKICAgICBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lciA9IGZh
bHNlOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCmluZGV4IDk1YzYyOWEzODI5ZmExOTAzYzBhYTExYTEzZGNkOWM0NTIzMjdjY2Eu
LjI4ZTIwYjFmMzEzYmM4MmE3MzdiNmQwMzVmYTc5MzQ2ZTQ4MmFjYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAt
MzgsMjQgKzM4LDIzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NQWdlbnQ7
CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5vZGU7
Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRE9NQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBET01E
ZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6RGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTURlYnVnZ2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERPTURlYnVnZ2VyQWdlbnQgZmluYWwg
OiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1
YmxpYyBET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRE9NRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
RE9NQWdlbnQqLCBJbnNwZWN0b3I6OkRlYnVnZ2VyQWdlbnQqKTsKKyAgICBET01EZWJ1Z2dlckFn
ZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqLCBET01BZ2VudCosIERlYnVnZ2VyQWdl
bnQqKTsKICAgICB2aXJ0dWFsIH5ET01EZWJ1Z2dlckFnZW50KCk7CiAKICAgICAvLyBET01EZWJ1
Z2dlciBBUEkKQEAgLTY5LDMwICs2OCwzMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHR5cGUpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxi
YWNrcy4KLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCk7Ci0gICAgdm9p
ZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUmKTsKLSAgICB2b2lkIGRpZEluc2VydERPTU5v
ZGUoTm9kZSYpOwotICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSYpOwotICAgIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7Ci0gICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVt
ZW50Jik7CisgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShXZWJDb3JlOjpOb2RlJiBwYXJlbnQp
OworICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihXZWJDb3JlOjpOb2RlJik7CisgICAg
dm9pZCBkaWRJbnNlcnRET01Ob2RlKFdlYkNvcmU6Ok5vZGUmKTsKKyAgICB2b2lkIHdpbGxSZW1v
dmVET01Ob2RlKFdlYkNvcmU6Ok5vZGUmKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoV2Vi
Q29yZTo6Tm9kZSYpOworICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoV2ViQ29yZTo6RWxlbWVu
dCYpOwogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7
CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgLy8gSW5zcGVjdG9yOjpEZWJ1Z2dlckFnZW50OjpMaXN0ZW5l
ciBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RlcEludG8oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1
c2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoKTsKIAotICAgIHZvaWQgZGVzY3JpcHRp
b25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNl
cnRpb24sIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBkZXNjcmlwdGlvbik7Ci0gICAgdm9p
ZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSosIHVpbnQzMl90IHJvb3RNYXNrLCBib29s
IHNldCk7Ci0gICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CisgICAgdm9p
ZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KFdlYkNvcmU6Ok5vZGUmIHRhcmdldCwgaW50IGJyZWFr
cG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0JiBkZXNjcmlwdGlvbik7
CisgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoV2ViQ29yZTo6Tm9kZSosIHVpbnQz
Ml90IHJvb3RNYXNrLCBib29sIHNldCk7CisgICAgYm9vbCBoYXNCcmVha3BvaW50KFdlYkNvcmU6
Ok5vZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKICAgICB2b2lk
IHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CiAg
ICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVu
dE5hbWUpOwpAQCAtMTAwLDE1ICs5OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXIoKTsK
IAogICAgIERPTUFnZW50KiBtX2RvbUFnZW50OwotICAgIEluc3BlY3Rvcjo6RGVidWdnZXJBZ2Vu
dCogbV9kZWJ1Z2dlckFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgSGFzaE1hcDxOb2RlKiwg
dWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CisgICAgRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dl
ckFnZW50OworICAgIFJlZlB0cjxET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIEhhc2hNYXA8V2ViQ29yZTo6Tm9kZSosIHVpbnQzMl90PiBtX2Rv
bUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2V2ZW50TGlzdGVuZXJCcmVha3Bv
aW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV94aHJCcmVha3BvaW50czsKICAgICBib29sIG1f
cGF1c2VJbk5leHRFdmVudExpc3RlbmVyOwogICAgIGJvb2wgbV9wYXVzZU9uQWxsWEhSc0VuYWJs
ZWQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKaW5kZXggODUxZWZiM2M0Yzg1N2MzYTk0Y2QwM2EzYWE2OGQ5YTM0N2M2YTIyYi4uY2Yx
MTQ1ZDViZDM3YzY3MGI4YTMwMzY5MmY1NzJmYjc1OGEwZGZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTQ4
LDkgKzQ4LDkgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBET01TdG9yYWdlQWdlbnQ6OkRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6
IFdlYkFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKQEAgLTY2LDEzICs2NiwxMyBAQCBET01TdG9yYWdlQWdlbnQ6On5ET01TdG9yYWdlQWdl
bnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IG51bGxwdHI7CiB9CiAKLXZvaWQgRE9N
U3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIERPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERP
TVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IERPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQg
RE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgRE9NU3RvcmFn
ZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0K
IAotdm9pZCBET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4+JiBpdGVtcykKK3ZvaWQgRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdl
SXRlbXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIHN0b3JhZ2VJZCwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4+JiBpdGVtcykKIHsKICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFn
ZUlkLmNvcHlSZWYoKSwgZnJhbWUpOwpAQCAtMTAwLDEzICsxMDAsMTMgQEAgdm9pZCBET01TdG9y
YWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZUl0
ZW1zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj46OmNyZWF0ZSgpOworICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gUHJvdG9jb2w6
OkFycmF5PFByb3RvY29sOjpBcnJheTxTdHJpbmc+Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc3RvcmFnZUFyZWEtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAg
U3RyaW5nIGtleSA9IHN0b3JhZ2VBcmVhLT5rZXkoaSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IHN0b3JhZ2VBcmVhLT5pdGVtKGtleSk7CiAKLSAgICAgICAgYXV0byBlbnRyeSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGVudHJ5
ID0gUHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBlbnRyeS0+YWRk
SXRlbShrZXkpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbSh2YWx1ZSk7CiAgICAgICAgIHN0b3Jh
Z2VJdGVtcy0+YWRkSXRlbShXVEY6Om1vdmUoZW50cnkpKTsKQEAgLTE1NCw5ICsxNTQsOSBAQCBT
dHJpbmcgRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU3RvcmFnZSogc3RvcmFnZSkKICAgICBy
ZXR1cm4gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBpc0xvY2FsU3RvcmFnZSktPnRv
SlNPTlN0cmluZygpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFn
ZTo6U3RvcmFnZUlkPiBET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCitSZWZQdHI8UHJvdG9jb2w6OkRP
TVN0b3JhZ2U6OlN0b3JhZ2VJZD4gRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewotICAgIHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCisg
ICAgcmV0dXJuIFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKICAg
ICAgICAgLnNldElzTG9jYWxTdG9yYWdlKGlzTG9jYWxTdG9yYWdlKQogICAgICAgICAucmVsZWFz
ZSgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRj
aERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nCiAgICAgaWYg
KCFtX2Zyb250ZW5kRGlzcGF0Y2hlciB8fCAhbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBp
ZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdl
KTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gaWQgPSBzdG9y
YWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSk7CiAKICAg
ICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tU3Rv
cmFnZUl0ZW1zQ2xlYXJlZChpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggZjZlYjc1NjdmNmM0MmY2NTc2YTlmNTBm
ZjI1YzkyYmQ0N2E4OGM5YS4uNDRkMDA2MjExNjBmYzgzZWFmZjYyZGQ3Yjk2MzVjN2M1NGEyOTUw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaApAQCAtMzUsNTQgKzM1LDUzIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7
Ci1jbGFzcyBET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yQXJy
YXk7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZTsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CitjbGFzcyBET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yQXJy
YXk7CitjbGFzcyBQYWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1j
bGFzcyBET01TdG9yYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERP
TVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBET01TdG9y
YWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBh
Z2VBZ2VudCopOworICAgIERPTVN0b3JhZ2VBZ2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdl
bnRzKiwgUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+RE9NU3RvcmFnZUFnZW50KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJv
bnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBp
dGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9y
U3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBzdG9yYWdlSWQsIGNvbnN0IFN0
cmluZyYga2V5KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFnZUl0ZW1z
KEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBzdG9yYWdlSWQs
IFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmlu
ZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAogICAg
IC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCi0gICAgU3RyaW5nIHN0b3JhZ2VJ
ZChTdG9yYWdlKik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTVN0b3JhZ2U6
OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2FsU3RvcmFn
ZSk7CisgICAgU3RyaW5nIHN0b3JhZ2VJZChXZWJDb3JlOjpTdG9yYWdlKik7CisgICAgUmVmUHRy
PFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOworICAg
IHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIFdlYkNvcmU6OlBhZ2UqKTsKIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmlu
ZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiwgRnJhbWUqJik7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JT
dHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmLCBXZWJDb3JlOjpGcmFtZSom
KTsKIAogICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxET01TdG9yYWdlRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8RE9NU3RvcmFn
ZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9lbmFi
bGVkOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JET01TdG9yYWdlQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cAppbmRleCA5NjFiZTQwMjY3YTk3MGY0MmNkZjYwMWJiM2JkNTQzNWFjNDgxODUyLi4xMzc2NGQ5
YjhmZGFlMjI0MTUwYzE3NGYwMjQ2ZWRlOGY1YjZjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC00OSw5ICs0OSw5
IEBACiAKIHR5cGVkZWYgSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxDYWxsYmFjazsKIAotdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsKIApAQCAtMjIyLDEz
ICsyMjIsMTMgQEAgRGF0YWJhc2VBZ2VudDo6fkRhdGFiYXNlQWdlbnQoKQogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0RGF0YWJhc2VBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBEYXRh
YmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIERhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogfQogCi12b2lkIERhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgRGF0YWJhc2VBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5j
bGVhcigpOwpAQCAtMzE4LDQgKzMxOCw0IEBAIERhdGFiYXNlKiBEYXRhYmFzZUFnZW50OjpkYXRh
YmFzZUZvcklkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCkKICAgICByZXR1cm4gaXQtPnZhbHVl
LT5kYXRhYmFzZSgpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5oCmluZGV4IDhkZWRiYmUzNmVkYTUyZGNlNjk4MzE3OWUyMDMyZTEyZTAwYThm
ZWYuLjI5NjdmZTM1OTY3YTEyYzM1YjIzYzYzOTAyYmY4MDY2YjA1YTljZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtMzUs
MjYgKzM1LDI2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JB
cnJheTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNz
IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwor
fQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBEYXRhYmFzZUFnZW50IGZpbmFsIDog
cHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgRGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJB
Z2VudEJhc2UsIHB1YmxpYyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGF0YWJhc2VB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgZXhwbGljaXQgRGF0YWJhc2VBZ2VudChX
ZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+RGF0YWJhc2VBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJl
c291cmNlcygpOwogCkBAIC02NSwyMCArNjUsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmKSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCi0gICAgU3RyaW5nIGRhdGFi
YXNlSWQoRGF0YWJhc2UqKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VJZChXZWJDb3JlOjpEYXRhYmFz
ZSopOwogCi0gICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZT4sIGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbik7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpEYXRh
YmFzZT4sIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbik7CiBwcml2YXRlOgotICAgIERhdGFiYXNlKiBkYXRhYmFzZUZvcklkKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZCk7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZSog
ZmluZEJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV2ViQ29yZTo6RGF0
YWJhc2UqIGRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkKTsKKyAgICBXZWJD
b3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlPj4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAgIERhdGFiYXNlUmVzb3VyY2VzTWFwIG1fcmVz
b3VyY2VzOwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JEYXRhYmFzZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCAyNDI1OTc2ZjE1ZDA1ZmViMmU2MWQyNjMy
NWE0M2NjZDZiYTE4NGNhLi45NGRiYzJmMTMzOWYwZjI2ZjE3Mzg3MGRjMzQ0OWVkY2JjZDY2Nzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKQEAgLTgzLDkgKzgzLDkgQEAgdHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWRE
QkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmUKIHR5
cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVl
c3REYXRhQ2FsbGJhY2sgUmVxdWVzdERhdGFDYWxsYmFjazsKIHR5cGVkZWYgSW5zcGVjdG9yOjpJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFj
ayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTc3NCw2ICs3NzQsNiBAQCB2b2lk
IEluZGV4ZWREQkFnZW50OjpjbGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzZQogICAgIGNsZWFyT2JqZWN0U3RvcmUtPnN0YXJ0KGlkYkZhY3Rv
cnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCA4MjZjYWFjM2ViNGNiZTQxYThjNGYy
MTM4YTRiNmQ5ZWU1ZDQxYzAyLi45MDg1Mjc4NmM0OWMyZGYyNTcwMDZkNjcxMDFiOWFkZDMyYmNh
NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaApAQCAtMzgsMzggKzM4LDM1IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFu
YWdlcjsKIGNsYXNzIFBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluZGV4ZWREQkFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
ZGV4ZWREQkFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIEluZGV4ZWRE
QkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgSW5kZXhlZERCQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
UGFnZUFnZW50Kik7CisgICAgSW5kZXhlZERCQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwg
fkluZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVs
KiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFJlZjxSZXF1ZXN0RGF0
YWJhc2VOYW1lc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dERhdGFiYXNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFJlZjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4mJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50
IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiYga2V5UmFuZ2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENv
dW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYga2V5UmFu
Z2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGlu
X29iamVjdFN0b3JlTmFtZSwgUmVmPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKKyAgICBSZWZQdHI8SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2VuZGlmIC8v
ICFkZWZpbmVkKEluc3BlY3RvckluZGV4ZWREQkFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNjkwNDI0MjIz
MGVlNDI3N2I0YTFmMGVlMTYyZGJmYzJlYTNiYWRhMy4uYWZmZmYyNjU5NGIwOTY5ZGVmOThjODE5
Y2E0NzI3NTkwNzZiZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNTgsOCArNTgsMTAgQEAgY2xhc3MgU2NyaXB0
T2JqZWN0OwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwor
Y2xhc3MgQ1NTQWdlbnQ7CiBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxs
U3RhY2s7CitjbGFzcyBUaW1lbGluZUFnZW50OwogfQogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY4
LDcgKzcwLDYgQEAgY2xhc3MgUHJvZmlsZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDU1NBZ2VudDsKIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CkBAIC05OCw3ICs5OSw2IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xh
c3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlUnVsZTsKIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQ7Ci1jbGFzcyBUaW1lbGluZUFnZW50OwogY2xhc3MgVVJMOwogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OwpAQCAtNDU4LDcgKzQ1
OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogICAg
IHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9j
dW1lbnRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIHN0YXRpYyBUaW1l
bGluZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCogcmV0
cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwogCiAgICAgc3RhdGljIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJv
b2wgc3luY2hyb25vdXMpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVu
dChJbnN0cnVtZW50aW5nQWdlbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCA5Y2IxZjBhYTA0ZWRiM2NkODIz
N2RiN2Y1OTM3MDQ2NzAyYTAxZmZjLi42MDNlN2Q3MTBiODE2YWI0ODQ1NzQ5YWUwZDZmYWZmY2Jh
ZGEwYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCi11c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBMYXllclRyZWVBZ2VudDo6TGF5
ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICA6IFdlYkFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQpAQCAtNTYsMTMgKzU2LDEzIEBAIExheWVyVHJlZUFnZW50Ojp+TGF5ZXJUcmVlQWdl
bnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBMYXllclRyZWVCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9p
ZCBMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKQordm9pZCBMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpAQCAtMzU3
LDQgKzM1Nyw0IEBAIHZvaWQgTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZFBzZXVkb0VsZW1lbnQoUHNl
dWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkKICAgICBtX3BzZXVkb0VsZW1lbnRUb0lkTWFwLnJl
bW92ZShpdGVyYXRvcik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaAppbmRleCAzMmRjZjM4MmRkMzY2YjViMWU4YzMwZWFkMGZhOGQzY2M0
MTNiMjI1Li41YTA5Nzc0NDcwN2QxYjc0NDM3YWE4YjMzNTBiMWRjOWVkOTBjYWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApA
QCAtMzksMjUgKzM5LDI3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK30KKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBJbnNw
ZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBMYXllclRy
ZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBMYXllclRyZWVCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IExheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
KyAgICBleHBsaWNpdCBMYXllclRyZWVBZ2VudChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRz
Kik7CiAgICAgdmlydHVhbCB+TGF5ZXJUcmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Ci0gICAg
dm9pZCByZW5kZXJMYXllckRlc3Ryb3llZChjb25zdCBSZW5kZXJMYXllciYpOwotICAgIHZvaWQg
cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50Jik7CisgICAgdm9pZCByZW5kZXJM
YXllckRlc3Ryb3llZChjb25zdCBXZWJDb3JlOjpSZW5kZXJMYXllciYpOworICAgIHZvaWQgcHNl
dWRvRWxlbWVudERlc3Ryb3llZChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50Jik7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKQEAgLTY3LDMwICs2OSwzMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgLy8gUmVuZGVyTGF5ZXItcmVsYXRlZCBtZXRob2RzLgotICAgIFN0cmluZyBiaW5kKGNv
bnN0IFJlbmRlckxheWVyKik7Ci0gICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsK
KyAgICBTdHJpbmcgYmluZChjb25zdCBXZWJDb3JlOjpSZW5kZXJMYXllciopOworICAgIHZvaWQg
dW5iaW5kKGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVyKik7CiAKLSAgICB2b2lkIGdhdGhlckxh
eWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nJiwgUmVuZGVyT2JqZWN0
KiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJM
YXllckhpZXJhcmNoeShFcnJvclN0cmluZyYsIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+
PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJy
b3JTdHJpbmcmLCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Cisg
ICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5n
JiwgV2ViQ29yZTo6UmVuZGVyTGF5ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CiAKLSAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXll
cihFcnJvclN0cmluZyYsIFJlbmRlckxheWVyKik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJl
Y3QmKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gYnVp
bGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyYsIFdlYkNvcmU6OlJlbmRlckxheWVyKik7Cisg
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmpl
Y3RGb3JJbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAotICAgIGludCBpZEZvck5v
ZGUoRXJyb3JTdHJpbmcmLCBOb2RlKik7CisgICAgaW50IGlkRm9yTm9kZShFcnJvclN0cmluZyYs
IFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIFN0cmluZyBiaW5kUHNldWRvRWxlbWVudChQc2V1ZG9F
bGVtZW50Kik7Ci0gICAgdm9pZCB1bmJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsK
KyAgICBTdHJpbmcgYmluZFBzZXVkb0VsZW1lbnQoV2ViQ29yZTo6UHNldWRvRWxlbWVudCopOwor
ICAgIHZvaWQgdW5iaW5kUHNldWRvRWxlbWVudChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50Kik7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkxheWVyVHJl
ZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCi0gICAgSGFzaE1hcDxj
b25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKLSAgICBI
YXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKKyAgICBIYXNo
TWFwPGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVyKiwgU3RyaW5nPiBtX2RvY3VtZW50TGF5ZXJU
b0lkTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJMYXllcio+
IG1faWRUb0xheWVyOwogCi0gICAgSGFzaE1hcDxQc2V1ZG9FbGVtZW50KiwgU3RyaW5nPiBtX3Bz
ZXVkb0VsZW1lbnRUb0lkTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBQc2V1ZG9FbGVtZW50Kj4g
bV9pZFRvUHNldWRvRWxlbWVudDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQq
LCBTdHJpbmc+IG1fcHNldWRvRWxlbWVudFRvSWRNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFdl
YkNvcmU6OlBzZXVkb0VsZW1lbnQqPiBtX2lkVG9Qc2V1ZG9FbGVtZW50OwogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA0MzRkODQ2NTVlMWFlZmVlMjU4
ODIyMjAxMWJlMjQwZjg5Mzk5NDVlLi5hNjZiNGE1NmM1ZDgyNWI1MDBiZWE1NDZhMTQ0YWY2MWNk
YjgzYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNzksMTQgKzc5LDE0IEBACiAjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5o
IgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAg
ICAgaWYgKGJ1ZmZlcikgewotICAgICAgICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29k
aW5nTmFtZSk7CisgICAgICAgIFdlYkNvcmU6OlRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5j
b2RpbmdOYW1lKTsKICAgICAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgICAgICAqcmVzdWx0ID0g
ZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlciwgc2l6ZSk7CkBAIC0zMzcsMTMgKzMzNywxMyBAQCBQYWdl
QWdlbnQ6OlBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBQYWdlKiBwYWdlLCBJbnNwZQogewogfQogCi12b2lkIFBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIFBhZ2VB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci5jbGVhcigpOwpAQCAtMTA3MSw0ICsxMDcxLDQgQEAgdm9pZCBQYWdlQWdlbnQ6OmFyY2hp
dmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCiAjZW5kaWYKIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMDJiMWQ0NmNk
NThlNDI4ODhkMGY0ZjAyM2UxZTBiYjJkYTc0Y2ZmYS4uNGY4NDMzODQxNjY4ZDY4MjI4ZDA0ZjIx
ZGJlNTc3MzM4OGQwNzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtNDEsMTMgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBET01XcmFw
cGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTYxLDE0ICs1NSwyMCBAQCBjbGFz
cyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgVVJMOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCi1jbGFzcyBQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdlbnRC
YXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIFBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBQYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhZ2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZSosIEluc3BlY3RvckNsaWVudCosIEluc3BlY3Rv
ck92ZXJsYXkqKTsKKyAgICBQYWdlQWdlbnQoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyos
IFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqLCBXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5Kik7CiAKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CiAgICAgICAgIERvY3Vt
ZW50UmVzb3VyY2UsCkBAIC04MSwxNiArODEsMTYgQEAgcHVibGljOgogICAgICAgICBPdGhlclJl
c291cmNlCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKLSAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JT
dHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRF
bmNvZGVkKTsKLSAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hl
ZFJlc291cmNlKik7CisgICAgc3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlKiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQp
OworICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0
aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIHJlc291cmNl
Q29udGVudChFcnJvclN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOworICAgIHN0YXRpYyBTdHJp
bmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqKTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhKEZyYW1lKiwg
Y29uc3QgVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBzdGF0aWMgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoV2ViQ29yZTo6
RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwor
ICAgIHN0YXRpYyBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoV2ViQ29y
ZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUpzb24oUmVzb3VyY2VUeXBl
KTsKLSAgICBzdGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwor
ICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlJik7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OlJlc291cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlJik7CiAKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0xMTksNDAg
KzExOSw0MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFyY2hpdmUoRXJyb3JTdHJpbmcm
LCBTdHJpbmcqIGRhdGEpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIGNhbGxiYWNrcy4KLSAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFt
ZSosIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9p
ZCBkb21Db250ZW50RXZlbnRGaXJlZCgpOwogICAgIHZvaWQgbG9hZEV2ZW50RmlyZWQoKTsKLSAg
ICB2b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBmcmFtZURl
dGFjaGVkKEZyYW1lJik7Ci0gICAgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShEb2N1bWVu
dExvYWRlciYpOwotICAgIHZvaWQgZnJhbWVTdGFydGVkTG9hZGluZyhGcmFtZSYpOwotICAgIHZv
aWQgZnJhbWVTdG9wcGVkTG9hZGluZyhGcmFtZSYpOwotICAgIHZvaWQgZnJhbWVTY2hlZHVsZWRO
YXZpZ2F0aW9uKEZyYW1lJiwgZG91YmxlIGRlbGF5KTsKLSAgICB2b2lkIGZyYW1lQ2xlYXJlZFNj
aGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmKTsKKyAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBmcmFtZURldGFjaGVkKFdlYkNvcmU6OkZy
YW1lJik7CisgICAgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciYpOworICAgIHZvaWQgZnJhbWVTdGFydGVkTG9hZGluZyhXZWJDb3JlOjpGcmFtZSYp
OworICAgIHZvaWQgZnJhbWVTdG9wcGVkTG9hZGluZyhXZWJDb3JlOjpGcmFtZSYpOworICAgIHZv
aWQgZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKFdlYkNvcmU6OkZyYW1lJiwgZG91YmxlIGRlbGF5
KTsKKyAgICB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oV2ViQ29yZTo6RnJh
bWUmKTsKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAgICAgdm9pZCBkaWRSdW5KYXZhU2NyaXB0RGlhbG9nKCk7CiAgICAgdm9pZCBhcHBs
eUVtdWxhdGVkTWVkaWEoU3RyaW5nJik7Ci0gICAgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3Qq
LCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBkaWRQYWludChXZWJDb3JlOjpSZW5kZXJP
YmplY3QqLCBjb25zdCBXZWJDb3JlOjpMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBkaWRMYXlvdXQo
KTsKICAgICB2b2lkIGRpZFNjcm9sbCgpOwogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgp
OwogICAgIHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwogCiAgICAgLy8gSW5z
cGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5l
bCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAg
ICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQotICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7
IH0KLSAgICBGcmFtZSogbWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSgpIHsg
cmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBT
dHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwotICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUq
KTsKLSAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKLSAgICBTdHJpbmcgbG9h
ZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKLSAgICBGcmFtZSogYXNzZXJ0
RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIHN0YXRpYyBE
b2N1bWVudExvYWRlciogYXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmLCBGcmFtZSop
OworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoV2ViQ29yZTo6RnJhbWUqKTsKKyAg
ICBib29sIGhhc0lkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBjb25zdDsKKyAgICBTdHJpbmcg
bG9hZGVySWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICBXZWJDb3JlOjpGcmFtZSog
ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5n
KTsKKyAgICBXZWJDb3JlOjpGcmFtZSogYXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQpOworICAgIHN0YXRpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogYXNz
ZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopOwogCiBwcml2
YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xNjEsMzIgKzE2MSwzMSBAQCBwcml2
YXRlOgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwogCi0gICAgc3RhdGljIGJvb2wgbWFpblJl
c291cmNlQ29udGVudChGcmFtZSosIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpOworICAgIHN0YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoV2ViQ29yZTo6RnJhbWUq
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgYm9v
bCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpOwogCi0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBidWlsZE9i
amVjdEZvckZyYW1lKEZyYW1lKik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwotICAg
IFBhZ2UqIG1fcGFnZTsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7Cisg
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lKik7CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShXZWJDb3JlOjpGcmFt
ZSopOworICAgIFdlYkNvcmU6OlBhZ2UqIG1fcGFnZTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQqIG1fY2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8UGFnZUJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXkq
IG1fb3ZlcmxheTsKICAgICBsb25nIG1fbGFzdFNjcmlwdElkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlOwogICAgIFN0cmluZyBtX3Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOwotICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+IG1fZnJh
bWVUb0lkZW50aWZpZXI7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEZyYW1lKj4gbV9pZGVudGlmaWVy
VG9GcmFtZTsKLSAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRlclRv
SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lKiwgU3RyaW5nPiBtX2ZyYW1l
VG9JZGVudGlmaWVyOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZSo+IG1faWRl
bnRpZmllclRvRnJhbWU7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFN0
cmluZz4gbV9sb2FkZXJUb0lkZW50aWZpZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9v
bCBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZDsKICAgICBib29sIG1fb3JpZ2luYWxTY3JpcHRF
eGVjdXRpb25EaXNhYmxlZDsKICAgICBib29sIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmlj
YXRpb247CiAgICAgYm9vbCBtX3Nob3dQYWludFJlY3RzOwogICAgIFN0cmluZyBtX2VtdWxhdGVk
TWVkaWE7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3NjcmlwdHNU
b0V2YWx1YXRlT25Mb2FkOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1Rv
RXZhbHVhdGVPbkxvYWQ7CiB9OwogCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yUGFnZXJBZ2Vu
dF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5jcHAKaW5kZXggMzAxNTQ3ZGRiMzU0M2NjYWJjNDgwYmU2ZjExOGY1MDc1M2RiMTQwMy4uY2Jh
OTkyZGMwNjdhY2U1NWZjNTVmNjY2ODMwMTkzZTlmYmNlZTIxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCkBAIC01MCw5ICs1MCw5
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgUmVwbGF5UG9zaXRpb24mIHBv
c2l0aW9uKQogewpAQCAtMTY3LDEwICsxNjcsMTAgQEAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIFJl
cGxheUFnZW50OjpzZXNzaW9uU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UucmVwbGF5
Q29udHJvbGxlcigpLnNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIFJlcGxheUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIFJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gUmVwbGF5QmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldFJlcGxheUFnZW50KHRoaXMpOwogICAgIEFTU0VSVChzZXNzaW9uU3Rh
dGUoKSA9PSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkluYWN0aXZlKTsKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIFJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZQogICAgICAgICBtX3NlZ21lbnRzTWFwLmFkZCgo
Kml0KS0+aWRlbnRpZmllcigpLCAqaXQpOwogfQogCi12b2lkIFJlcGxheUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lk
IFJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC01MDcsNiArNTA3LDYgQEAgdm9pZCBSZXBsYXlBZ2Vu
dDo6Z2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjoKICAgICBzZXJpYWxpemVkT2JqZWN0ID0gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JT
ZWdtZW50KFdURjo6bW92ZShzZWdtZW50KSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCmlu
ZGV4IDZiNjUwNmE2ZjczMDg3NzI0ODJjY2M4MmEyMjU0MWJmYmFmY2FhMWEuLmYzY2IyZmZhOGFi
YzU0MTQwZjg1YTE4ZTI1MTg1OWU3NjgxMDE2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC0zOCwxOSArMzgsMjAgQEAKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsKIGNsYXNzIFJlcGxh
eVNlc3Npb247CiBjbGFzcyBSZXBsYXlTZXNzaW9uU2VnbWVudDsKLQogZW51bSBjbGFzcyBTZXNz
aW9uU3RhdGU7Ci0KIHN0cnVjdCBSZXBsYXlQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CisKK2NsYXNzIFBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiB0eXBlZGVmIGludCBTZXNzaW9uSWRlbnRpZmllcjsKQEAgLTU4LDQ0ICs1OSw0NCBAQCB0eXBl
ZGVmIGludCBTZWdtZW50SWRlbnRpZmllcjsKIAogY2xhc3MgUmVwbGF5QWdlbnQgZmluYWwKICAg
ICA6IHB1YmxpYyBXZWJBZ2VudEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlJlcGxheUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgLCBwdWJsaWMgUmVwbGF5QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXlBZ2VudCk7CiBw
dWJsaWM6Ci0gICAgUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2VBZ2VudCop
OworICAgIFJlcGxheUFnZW50KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlQWdl
bnQqKTsKICAgICB2aXJ0dWFsIH5SZXBsYXlBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24p
IG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4K
LSAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBmcmFt
ZURldGFjaGVkKEZyYW1lJik7Ci0gICAgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVu
dCYsIEZyYW1lKik7CisgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopOworICAgIHZvaWQgZnJhbWVEZXRhY2hlZChXZWJDb3JlOjpGcmFtZSYpOworICAgIHZv
aWQgd2lsbERpc3BhdGNoRXZlbnQoY29uc3QgV2ViQ29yZTo6RXZlbnQmLCBXZWJDb3JlOjpGcmFt
ZSopOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIFJlcGxheUNvbnRyb2xsZXIuCi0gICAg
dm9pZCBzZXNzaW9uQ3JlYXRlZChSZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJik7CisgICAgdm9pZCBz
ZXNzaW9uQ3JlYXRlZChSZWZQdHI8V2ViQ29yZTo6UmVwbGF5U2Vzc2lvbj4mJik7CiAgICAgLy8g
VGhpcyBpcyBjYWxsZWQgaW50ZXJuYWxseSAod2hlbiBhZGRpbmcvcmVtb3ZpbmcpIGFuZCBieSBS
ZXBsYXlDb250cm9sbGVyIGR1cmluZyBjYXB0dXJlLgotICAgIHZvaWQgc2Vzc2lvbk1vZGlmaWVk
KFJlZlB0cjxSZXBsYXlTZXNzaW9uPiYmKTsKLSAgICB2b2lkIHNlc3Npb25Mb2FkZWQoUmVmUHRy
PFJlcGxheVNlc3Npb24+JiYpOworICAgIHZvaWQgc2Vzc2lvbk1vZGlmaWVkKFJlZlB0cjxXZWJD
b3JlOjpSZXBsYXlTZXNzaW9uPiYmKTsKKyAgICB2b2lkIHNlc3Npb25Mb2FkZWQoUmVmUHRyPFdl
YkNvcmU6OlJlcGxheVNlc3Npb24+JiYpOwogCi0gICAgdm9pZCBzZWdtZW50Q3JlYXRlZChSZWZQ
dHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOwotICAgIHZvaWQgc2VnbWVudENvbXBsZXRlZChS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOwotICAgIHZvaWQgc2VnbWVudExvYWRlZChS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOworICAgIHZvaWQgc2VnbWVudENyZWF0ZWQo
UmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb25TZWdtZW50PiYmKTsKKyAgICB2b2lkIHNlZ21l
bnRDb21wbGV0ZWQoUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb25TZWdtZW50PiYmKTsKKyAg
ICB2b2lkIHNlZ21lbnRMb2FkZWQoUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb25TZWdtZW50
PiYmKTsKICAgICB2b2lkIHNlZ21lbnRVbmxvYWRlZCgpOwogCiAgICAgdm9pZCBjYXB0dXJlU3Rh
cnRlZCgpOwogICAgIHZvaWQgY2FwdHVyZVN0b3BwZWQoKTsKIAogICAgIHZvaWQgcGxheWJhY2tT
dGFydGVkKCk7Ci0gICAgdm9pZCBwbGF5YmFja1BhdXNlZChjb25zdCBSZXBsYXlQb3NpdGlvbiYp
OwotICAgIHZvaWQgcGxheWJhY2tIaXRQb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYpOwor
ICAgIHZvaWQgcGxheWJhY2tQYXVzZWQoY29uc3QgV2ViQ29yZTo6UmVwbGF5UG9zaXRpb24mKTsK
KyAgICB2b2lkIHBsYXliYWNrSGl0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVwbGF5UG9zaXRp
b24mKTsKICAgICB2b2lkIHBsYXliYWNrRmluaXNoZWQoKTsKIAogICAgIC8vIENhbGxzIGZyb20g
dGhlIEluc3BlY3RvciBmcm9udGVuZC4KICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmco
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmluZyhF
cnJvclN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcGxheVRvUG9zaXRp
b24oRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYsIGJvb2wgc2hvdWxkRmFzdEZvcndhcmQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBy
ZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mJiwgYm9vbCBzaG91bGRGYXN0Rm9yd2FyZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcGxheVRvQ29tcGxldGlvbihFcnJvclN0cmluZyYsIGJvb2wgc2hvdWxkRmFzdEZvcndhcmQp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNrKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBsYXliYWNrKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkBAIC0xMTAsMTkgKzExMSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5
OjpTZWdtZW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6
U2Vzc2lvblNlZ21lbnQ+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlcGxh
eVNlc3Npb24+IGZpbmRTZXNzaW9uKEVycm9yU3RyaW5nJiwgU2Vzc2lvbklkZW50aWZpZXIpOwot
ICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcm
LCBTZWdtZW50SWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlcGxheVNlc3Npb24+
IGZpbmRTZXNzaW9uKEVycm9yU3RyaW5nJiwgU2Vzc2lvbklkZW50aWZpZXIpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudD4gZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcm
LCBTZWdtZW50SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25T
dGF0ZSgpIGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UmVwbGF5RnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBQ
YWdlJiBtX3BhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlcGxheUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPFJlcGxheUJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFdlYkNvcmU6OlBhZ2UmIG1fcGFnZTsKIAot
ICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4sIFdURjo6SW50SGFzaDxpbnQ+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fc2Vzc2lvbnNNYXA7
Ci0gICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4sIFdURjo6SW50
SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fc2Vn
bWVudHNNYXA7CisgICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxXZWJDb3JlOjpSZXBsYXlTZXNzaW9u
PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
aW50Pj4gbV9zZXNzaW9uc01hcDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPFdlYkNvcmU6OlJl
cGxheVNlc3Npb25TZWdtZW50PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gbV9zZWdtZW50c01hcDsKIH07CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9SRVBMQVkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA2NTc2NTE0N2YwMWRjZjAyZTAzOTA4NmNiYTViOWM0
ZWE4NWI2ODRlLi4zYTk5YjVkYjAwNGI5YmE0Y2U2NDJjYTExY2VhOWYzNGE1OTg5NWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCkBAIC02OCwxMSArNjgsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgSW5zcGVjdG9yOjpOZXR3b3Jr
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpMb2FkUmVzb3VyY2VDYWxsYmFjayBMb2FkUmVzb3Vy
Y2VDYWxsYmFjazsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBtX3N0
YXR1c0NvZGUgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGFzc3VtZXMgdGV4dCBvbmx5IHJlc3BvbnNlcy4gV2Ugc2hvdWxkIHN1cHBvcnQgbm9u
LXRleHQgcmVzcG9uc2VzIGFzIHdlbGwuCi0gICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rp
bmcocmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAgICAgICAgV2ViQ29yZTo6VGV4dEVu
Y29kaW5nIHRleHRFbmNvZGluZyhyZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAg
ICBib29sIHVzZURldGVjdG9yID0gZmFsc2U7CiAgICAgICAgIGlmICghdGV4dEVuY29kaW5nLmlz
VmFsaWQoKSkgewogICAgICAgICAgICAgdGV4dEVuY29kaW5nID0gVVRGOEVuY29kaW5nKCk7CkBA
IC0xNzIsMTMgKzE3MiwxMyBAQCBSZXNvdXJjZUFnZW50OjpSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2VBZ2VudAogewogfQogCi12b2lk
IFJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIFJlc291cmNlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIu
Y2xlYXIoKTsKQEAgLTczNyw0ICs3MzcsNCBAQCB2b2lkIFJlc291cmNlQWdlbnQ6Om1haW5GcmFt
ZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYgbG9hZGVyKQogICAgIG1fcmVzb3VyY2VzRGF0YS0+
Y2xlYXIobV9wYWdlQWdlbnQtPmxvYWRlcklkKCZsb2FkZXIpKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA5OWY5NTNhZTk1YTcx
NGJiMDNkM2E1MTA2ZWNmMDkwNzUyOWMxZDc5Li5jOWMwMThiNWRlNWVlNDNhNmM4OWYyYWNhNTIx
YmI5ZDYxM2RhZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKQEAgLTM5LDEzICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSW5zcGVj
dG9yIHsKLWNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTU2LDcgKzUwLDYgQEAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
QEAgLTY5LDEzICs2MiwxNyBAQCBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CiAjZW5kaWYKK30KIAorbmFtZXNwYWNl
IEluc3BlY3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgUmVzb3Vy
Y2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Ok5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgUGFnZUFnZW50OworCitjbGFz
cyBSZXNvdXJjZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkFnZW50QmFzZSwgcHVibGljIE5ldHdv
cmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2VB
Z2VudCosIEluc3BlY3RvckNsaWVudCopOworICAgIFJlc291cmNlQWdlbnQoV2ViQ29yZTo6SW5z
dHJ1bWVudGluZ0FnZW50cyosIFBhZ2VBZ2VudCosIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCop
OwogICAgIHZpcnR1YWwgflJlc291cmNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC04NCwzNSArODEsMzUgQEAg
cHVibGljOgogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAg
dm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHls
ZSgpOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXImLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
c291cmNlTG9hZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciYgbG9hZGVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIm
LCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwot
ICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyJiwg
Q2FjaGVkUmVzb3VyY2UmKTsKLSAgICB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlzaFRpbWUpOwor
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2
b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJik7CisgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2Fk
aW5nKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVY
SFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbExvYWRY
SFJTeW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7
CisgICAgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlJik7CiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29j
a2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKTsKLSAg
ICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKTsKKyAgICB2
b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkQ2xvc2VXZWJT
b2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJT
b2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1l
Jik7Ci0gICAgdm9pZCBkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tl
dEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V2ViU29ja2V0
RnJhbWUmKTsKKyAgICB2b2lkIGRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OldlYlNvY2tldEZyYW1lJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVu
dExvYWRlciYpOworICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAotICAgIHZvaWQgZGlk
U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKKyAgICB2b2lkIGRpZFNjaGVk
dWxlU3R5bGVSZWNhbGN1bGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50Jik7CiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9i
amVjdChEb2N1bWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KFdlYkNvcmU6OkRvY3VtZW50Kik7CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0xMzIsMTAgKzEyOSwxMCBAQCBwcml2YXRlOgogICAg
IGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAg
SW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQq
IG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2Vz
RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKICAg
ICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBiNTUwMTQyOTI1MWI1YjJiMjNkOTUz
ZWRkMmY2Y2Q1ZjY5OTNmNDg1Li42YzJlOTY3NTQ1MzM2OTQ1YWVlY2U2NDA0NGRmZjNiMDE4ZGM2
MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKQEAgLTM4LDYgKzM4LDEwIEBACiAKIGNsYXNzIFBhcnNlZFN0eWxlU2hlZXQ7CiAKK25hbWVz
cGFjZSBJbnNwZWN0b3IgeworY2xhc3MgUGFnZUFnZW50OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENTU1J1bGVMaXN0OwpAQCAtNDgsNyArNTIsNiBAQCBjbGFzcyBDU1NTdHls
ZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9y
U3R5bGVTaGVldDsKLWNsYXNzIFBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKQEAgLTE2Niw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5z
cGVjdG9yU3R5bGVNYXA7Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVh
dGUoUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPENTU1N0eWxlU2hlZXQ+JiYg
cGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdp
biwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUmVm
PEluc3BlY3RvclN0eWxlU2hlZXQ+IGNyZWF0ZShJbnNwZWN0b3I6OlBhZ2VBZ2VudCosIGNvbnN0
IFN0cmluZyYgaWQsIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiYmIHBhZ2VTdHlsZVNoZWV0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9j
dW1lbnRVUkwsIExpc3RlbmVyKik7CiAgICAgc3RhdGljIFN0cmluZyBzdHlsZVNoZWV0VVJMKENT
U1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0KTsKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvclN0
eWxlU2hlZXQoKTsKQEAgLTE5NSw3ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NT
SWQgc3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gcnVs
ZU9yU3R5bGVJZChzdHlsZSk7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hl
ZXQoUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPENTU1N0eWxlU2hlZXQ+JiYg
cGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdp
biwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JT
dHlsZVNoZWV0KEluc3BlY3Rvcjo6UGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+JiYgcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIq
KTsKIAogICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1fb3Jp
Z2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsg
fQogICAgIEluc3BlY3RvckNTU0lkIHJ1bGVPclN0eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3IoY29uc3Qg
Q1NTU2VsZWN0b3IqLCBFbGVtZW50Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUq
LCBFbGVtZW50Kik7CiAKLSAgICBQYWdlQWdlbnQqIG1fcGFnZUFnZW50OworICAgIEluc3BlY3Rv
cjo6UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBTdHJpbmcgbV9pZDsKICAgICBSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gbV9wYWdlU3R5bGVTaGVldDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gbV9vcmlnaW47CkBAIC0yMzksMTQgKzI0MiwxNCBAQCBw
cml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShQYWdlQWdlbnQqLCBjb25z
dCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yOjpQYWdlQWdlbnQqLCBj
b25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRNb2RpZnlF
bGVtZW50QXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIGdldFRleHQoU3RyaW5nKiByZXN1
bHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJU
X1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoUGFnZUFnZW50
KiwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yOjpQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcm
IGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Qg
b3ZlcnJpZGUgeyBBU1NFUlRfVU5VU0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsg
cmV0dXJuIG1fcnVsZVNvdXJjZURhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBmYmM4MzFhMzAzNTI0ZjQyYmEy
Y2RmMGM1MTBhNzg0NDRmN2NiNjNjLi40MmMwYTlhNDExYTJmYzM1MjhlNTVlMzQ5Y2JkZjVlYTMx
YjdlNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC01NCwxOCArNTQsMTggQEAKICNpbmNsdWRlIDxwcm9maWxlci9M
ZWdhY3lQcm9maWxlci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi11c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBUaW1lbGluZUFnZW50Ojp+VGlt
ZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBU
aW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRD
aGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gVGltZWxpbmVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0UGVyc2lzdGVudFRpbWVsaW5lQWdlbnQodGhpcyk7CiAKQEAgLTczLDE0
ICs3MywxNCBAQCB2b2lkIFRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbgogICAgICAgICBtX3NjcmlwdERlYnVn
U2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogfQogCi12b2lkIFRpbWVsaW5lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCit2b2lkIFRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRUaW1lbGluZUFnZW50KG51bGxwdHIp
OwogCi0gICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RlZFRhcmdldERlc3Ryb3llZCkgeworICAgIGlmIChyZWFzb24gIT0gRGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKSB7CiAgICAgICAgIGlmIChtX3NjcmlwdERlYnVn
U2VydmVyKQogICAgICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci0+cmVjb21waWxlQWxsSlNG
dW5jdGlvbnMoKTsKICAgICB9CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBUaW1lbGluZUFnZW50
OjpkaWREZXN0cm95V2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqIGZy
YW1lKQogCiAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCiAKLXZvaWQgVGltZWxpbmVBZ2VudDo6YnJl
YWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnNwZWN0b3I6
OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWdu
ZWQgc2FtcGxlSWQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikKK3ZvaWQgVGltZWxp
bmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2ln
bmVkIHNhbXBsZUlkLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGJhdGNoSWQpOwogICAgIEFTU0VSVChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGYyZDcyNDM3ZTc0
MzY4NDM5NjU0Y2IzN2JmM2YyMTg1M2FjYThkMzMuLjY5ODFiY2ZhM2FhOTFmMzJkMzhjYThlYTgw
ZDg1YzQ5ZGZlZjc2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNDcsMjAgKzQ3LDIyIEBAIGNsYXNzIFByb2ZpbGU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFF1YWQ7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7Ci1jbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsK
IGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBVUkw7Cit9
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBQYWdlQWdlbnQ7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCkBAIC0xMDcsMjUgKzEwOSwyNSBAQCBlbnVtIGNsYXNzIFRp
bWVsaW5lUmVjb3JkVHlwZSB7CiAKIGNsYXNzIFRpbWVsaW5lQWdlbnQgZmluYWwKICAgICA6IHB1
YmxpYyBXZWJBZ2VudEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z0xp
c3RlbmVyIHsKKyAgICAsIHB1YmxpYyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgor
ICAgICwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRpbWVsaW5lQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGVudW0gSW5zcGVjdG9yVHlwZSB7IFBhZ2VJbnNwZWN0b3IsIFdvcmtlckluc3BlY3Rv
ciB9OwogCi0gICAgVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50
KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CisgICAgVGltZWxpbmVBZ2VudChX
ZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwg
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+VGltZWxpbmVBZ2VudCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51bGxwdHIp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CiAKICAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIHNldFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcihQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqKTsKKyAgICB2b2lkIHNl
dFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcihXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqKTsK
IAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogCkBAIC0xMzQsNDYgKzEzNiw0NiBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BGcm9tQ29uc29sZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uIGNhbGxiYWNrcy4KLSAgICB2b2lkIGRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJ
ZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZFJl
bW92ZVRpbWVyKGludCB0aW1lcklkLCBGcmFtZSopOwotICAgIHZvaWQgd2lsbEZpcmVUaW1lcihp
bnQgdGltZXJJZCwgRnJhbWUqKTsKKyAgICB2b2lkIGRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJ
ZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2
b2lkIGRpZFJlbW92ZVRpbWVyKGludCB0aW1lcklkLCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZv
aWQgd2lsbEZpcmVUaW1lcihpbnQgdGltZXJJZCwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lk
IGRpZEZpcmVUaW1lcigpOwotICAgIHZvaWQgd2lsbENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcm
IHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBGcmFtZSopOwotICAgIHZvaWQgZGlkQ2FsbEZ1
bmN0aW9uKEZyYW1lKik7Ci0gICAgdm9pZCB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdl
RXZlbnQoY29uc3QgU3RyaW5nJiwgaW50LCBGcmFtZSopOworICAgIHZvaWQgd2lsbENhbGxGdW5j
dGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBXZWJDb3JlOjpG
cmFtZSopOworICAgIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CisgICAg
dm9pZCB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiwg
aW50LCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlkRGlzcGF0Y2hYSFJSZWFkeVN0YXRl
Q2hhbmdlRXZlbnQoKTsKLSAgICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50Jiwg
RnJhbWUqKTsKKyAgICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IFdlYkNvcmU6OkV2ZW50
JiwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lkIGRpZERpc3BhdGNoRXZlbnQoKTsKLSAgICB2
b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmLCBpbnQsIEZyYW1lJik7Ci0gICAg
dm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSYpOwotICAgIHZvaWQgZGlkSW52YWxpZGF0ZUxh
eW91dChGcmFtZSYpOwotICAgIHZvaWQgd2lsbExheW91dChGcmFtZSYpOwotICAgIHZvaWQgZGlk
TGF5b3V0KFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgd2lsbFNjcm9sbChGcmFtZSYpOworICAg
IHZvaWQgd2lsbEV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYsIGludCwgV2ViQ29yZTo6RnJh
bWUmKTsKKyAgICB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KFdlYkNvcmU6OkZyYW1lJik7CisgICAg
dm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0KFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCB3aWxs
TGF5b3V0KFdlYkNvcmU6OkZyYW1lJik7CisgICAgdm9pZCBkaWRMYXlvdXQoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Kik7CisgICAgdm9pZCB3aWxsU2Nyb2xsKFdlYkNvcmU6OkZyYW1lJik7CiAgICAg
dm9pZCBkaWRTY3JvbGwoKTsKLSAgICB2b2lkIHdpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChjb25z
dCBTdHJpbmcmLCBGcmFtZSopOworICAgIHZvaWQgd2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdm9pZCBkaWREaXNwYXRjaFhIUkxv
YWRFdmVudCgpOwotICAgIHZvaWQgd2lsbFBhaW50KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRQYWlu
dChSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgdm9pZCB3aWxsUmVjYWxj
dWxhdGVTdHlsZShGcmFtZSopOworICAgIHZvaWQgd2lsbFBhaW50KFdlYkNvcmU6OkZyYW1lJik7
CisgICAgdm9pZCBkaWRQYWludChXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBXZWJDb3Jl
OjpMYXlvdXRSZWN0Jik7CisgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZShXZWJDb3JlOjpG
cmFtZSopOwogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwotICAgIHZvaWQgZGlkU2No
ZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRnJhbWUqKTsKLSAgICB2b2lkIHdpbGxXcml0ZUhUTUwo
dW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSopOworICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIHdpbGxXcml0ZUhUTUwodW5z
aWduZWQgc3RhcnRMaW5lLCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlkV3JpdGVIVE1M
KHVuc2lnbmVkIGVuZExpbmUpOwotICAgIHZvaWQgZGlkVGltZVN0YW1wKEZyYW1lJiwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBkaWRNYXJrRE9NQ29udGVudEV2ZW50KEZyYW1lJik7Ci0gICAg
dm9pZCBkaWRNYXJrTG9hZEV2ZW50KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQsIEZyYW1lKik7Ci0gICAgdm9pZCBkaWRDYW5jZWxBbmlt
YXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKLSAgICB2b2lkIHdpbGxGaXJlQW5p
bWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQsIEZyYW1lKik7CisgICAgdm9pZCBkaWRUaW1lU3Rh
bXAoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZE1hcmtET01D
b250ZW50RXZlbnQoV2ViQ29yZTo6RnJhbWUmKTsKKyAgICB2b2lkIGRpZE1hcmtMb2FkRXZlbnQo
V2ViQ29yZTo6RnJhbWUmKTsKKyAgICB2b2lkIGRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShpbnQg
Y2FsbGJhY2tJZCwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIGRpZENhbmNlbEFuaW1hdGlv
bkZyYW1lKGludCBjYWxsYmFja0lkLCBXZWJDb3JlOjpGcmFtZSopOworICAgIHZvaWQgd2lsbEZp
cmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCwgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2
b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwotICAgIHZvaWQgdGltZShGcmFtZSYsIGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgdGltZUVuZChGcmFtZSYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgdGltZShXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdGlt
ZUVuZChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEZyYW1lKik7Ci0gICAgdm9p
ZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBGcmFtZSopOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZERlc3Ry
b3lXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOworICAgIHZvaWQg
ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2
b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFdlYkNvcmU6OkZyYW1lKik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZSop
OworICAgIHZvaWQgZGlkRGVzdHJveVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lKik7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpAQCAtMTg1LDcgKzE4Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBJbnNwZWN0
b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBz
YW1wbGVJZCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHJlc3VsdCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25l
ZCBzYW1wbGVJZCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHJlc3VsdCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRpbWVsaW5lUmVjb3JkU3RhY2s7CkBA
IC0xOTMsMTQgKzE5NSwxNCBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBUaW1lbGluZVJlY29yZEVu
dHJ5IHsKICAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSgpCiAgICAgICAgICAgICA6IHR5cGUo
VGltZWxpbmVSZWNvcmRUeXBlOjpFdmVudERpc3BhdGNoKSB7IH0KLSAgICAgICAgVGltZWxpbmVS
ZWNvcmRFbnRyeShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlKQorICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiAgICAg
ICAgICAgICA6IHJlY29yZChyZWNvcmQpLCBkYXRhKGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiks
IHR5cGUodHlwZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gZGF0YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+IGNoaWxkcmVuOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNv
cmQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CiAgICAgICAgIFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlOwogICAgIH07CiAKQEAgLTIwOCwyOSArMjEwLDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bnRlcm5hbFN0b3AoKTsKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKLSAgICB2b2lkIHNlbmRF
dmVudChSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpOwotICAgIHZvaWQgYXBw
ZW5kUmVjb3JkKFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1l
bGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKLSAgICB2b2lk
IHB1c2hDdXJyZW50UmVjb3JkKFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiwg
VGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CisgICAg
dm9pZCBzZW5kRXZlbnQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJik7CisgICAgdm9pZCBhcHBl
bmRSZWNvcmQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1lbGluZVJlY29yZFR5
cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIHB1
c2hDdXJyZW50UmVjb3JkKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYsIFRpbWVsaW5lUmVjb3Jk
VHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQg
cHVzaEN1cnJlbnRSZWNvcmQoY29uc3QgVGltZWxpbmVSZWNvcmRFbnRyeSYgcmVjb3JkKSB7IG1f
cmVjb3JkU3RhY2suYXBwZW5kKHJlY29yZCk7IH0KIAotICAgIFRpbWVsaW5lUmVjb3JkRW50cnkg
Y3JlYXRlUmVjb3JkRW50cnkoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGRh
dGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOwor
ICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgY3JlYXRlUmVjb3JkRW50cnkoUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFj
aywgV2ViQ29yZTo6RnJhbWUqKTsKIAotICAgIHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIEZyYW1lKik7CisgICAgdm9pZCBzZXRGcmFt
ZUlkZW50aWZpZXIoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIFdlYkNvcmU6OkZyYW1lKik7CiAK
ICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkRW50cnkoY29uc3QgVGltZWxpbmVSZWNvcmRFbnRy
eSYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlw
ZSk7CiAKLSAgICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmLCBUaW1lbGluZVJlY29yZFR5cGUpOworICAgIHZvaWQgYWRkUmVjb3Jk
VG9UaW1lbGluZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmLCBUaW1lbGluZVJlY29yZFR5cGUp
OwogICAgIHZvaWQgY2xlYXJSZWNvcmRTdGFjaygpOwogCi0gICAgdm9pZCBsb2NhbFRvUGFnZVF1
YWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEZsb2F0UXVhZCopOwot
ICAgIFBhZ2UqIHBhZ2UoKTsKKyAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBXZWJDb3Jl
OjpSZW5kZXJPYmplY3QmLCBjb25zdCBXZWJDb3JlOjpMYXlvdXRSZWN0JiwgV2ViQ29yZTo6Rmxv
YXRRdWFkKik7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSgpOwogCiAgICAgUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKLSAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2
ZXI7CisgICAgV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2Vy
dmVyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlRp
bWVsaW5lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWZQdHI8VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKIAogICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwog
CkBAIC0yMzgsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jYWxsU3RhY2tEZXB0aDsK
ICAgICBpbnQgbV9tYXhDYWxsU3RhY2tEZXB0aDsKICAgICBJbnNwZWN0b3JUeXBlIG1faW5zcGVj
dG9yVHlwZTsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRy
eT4gbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzOwogCkBAIC0yNDYsNiArMjQ4LDYgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZEZyb21Gcm9udGVuZDsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IGE4ODY2NTJhNGE2YzY2NTY5MjEx
MzkwZTdjZWVhYjVhNjIwNmU3MDYuLjM4Y2FhNTdhY2Y2NTUyODc3MzhjMDAyYjFlZmM4NzU5Yzg5
MGQzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJB
Z2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgKQEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBXZWJBZ2VudEJhc2UgOiBwdWJs
aWMgSW5zcGVjdG9yOjpBZ2VudEJhc2UgeworY2xhc3MgV2ViQWdlbnRCYXNlIDogcHVibGljIEFn
ZW50QmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgV2ViQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgOiBJ
bnNwZWN0b3I6OkFnZW50QmFzZShuYW1lKQorICAgIFdlYkFnZW50QmFzZShjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgICAgIDogQWdlbnRCYXNlKG5hbWUpCiAgICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdl
bnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgewogICAgIH0KIAotICAgIEluc3RydW1lbnRp
bmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBXZWJDb3JlOjpJbnN0cnVtZW50
aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvcldlYkFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggODIzY2ZmODhlZDQ3OWIzYjZhNzc3OWU3Nzc3
ODJmOGY5ODE2YWE3MS4uOThlMTQ2ZmMyMTViOGZkZjVlYThmYzA2YjAwMGE1MWMzZjBjNjYwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCkBAIC0zOSwxNCArMzksMTQgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRD
aGFubmVsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3Igewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtl
ckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlciogZnJv
bnRlbmREaXNwYXRjaGVyLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkKKyAgICBleHBs
aWNpdCBXb3JrZXJGcm9udGVuZENoYW5uZWwoV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9u
dGVuZERpc3BhdGNoZXIsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQogICAgICAgICA6
IG1fZnJvbnRlbmREaXNwYXRjaGVyKGZyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgLCBtX3By
b3h5KHByb3h5KQogICAgICAgICAsIG1faWQoc19uZXh0SWQrKykKQEAgLTkyLDcgKzkyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZy
b21Xb3JrZXIobV9pZCwgbWVzc2FnZU9iamVjdCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yOjpX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFdvcmtl
ckZyb250ZW5kRGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgV29ya2VyR2xv
YmFsU2NvcGVQcm94eSogbV9wcm94eTsKICAgICBpbnQgbV9pZDsKICAgICBib29sIG1fY29ubmVj
dGVkOwpAQCAtMTE0LDEzICsxMTQsMTMgQEAgV29ya2VyQWdlbnQ6On5Xb3JrZXJBZ2VudCgpCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXb3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAot
dm9pZCBXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6
OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IFdvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwogfQogCi12b2lkIFdvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIFdvcmtlckFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fc2hvdWxk
UGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0ID0gZmFsc2U7CiAgICAgRXJyb3JTdHJpbmcgdW51
c2VkOwpAQCAtMjM2LDQgKzIzNiw0IEBAIHZvaWQgV29ya2VyQWdlbnQ6OmNyZWF0ZVdvcmtlckZy
b250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iCiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPndvcmtlckNyZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBtX3No
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCAxNmRhODA2OTg4OWEwYjc3ZjQyNGIz
OGJkYzM2NGY3YjhiM2ViOGJkLi5lZmM5OGU3ODE4NTNjMjE5Y2IzOGE5MTU5NTQxZDQ2NGI2ZjQ0
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaApAQCAtMzYsMzEgKzM2LDMxIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKLWNsYXNzIFdvcmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKIGNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgV29ya2VyQWdlbnQgZmluYWwg
OiBwdWJsaWMgV2ViQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQWdl
bnRCYXNlLCBwdWJsaWMgV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgZXhwbGljaXQgV29ya2VyQWdlbnQoV2ViQ29yZTo6
SW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHZpcnR1YWwgfldvcmtlckFnZW50KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24KICAgICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydCgpIGNvbnN0OwotICAgIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJH
bG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29w
ZVRlcm1pbmF0ZWQoV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOworICAgIHZvaWQgZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZShXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7CkBAIC02OCwyNiArNjgsMjYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyYsIGJvb2wqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nJiwgaW50IHdvcmtlcklk
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JT
dHJpbmcmLCBpbnQgd29ya2VySWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZVRvV29ya2VyKEVycm9yU3RyaW5nJiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcmLCBpbnQgd29ya2VySWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nJiwgYm9vbCB2YWx1
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVuZENo
YW5uZWxzRm9yRXhpc3RpbmdXb3JrZXJzKCk7Ci0gICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVu
ZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGVQcm94eSosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAg
ICB2b2lkIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZVByb3h5KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGVzdHJveVdvcmtlckZy
b250ZW5kQ2hhbm5lbHMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oldvcmtl
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CisgICAgUmVmUHRyPFdvcmtlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9zaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnQ7CiAKICAgICBjbGFzcyBXb3JrZXJGcm9udGVuZENoYW5uZWw7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgV29ya2VyRnJvbnRlbmRDaGFubmVsKj4gV29ya2Vy
Q2hhbm5lbHM7CiAgICAgV29ya2VyQ2hhbm5lbHMgbV9pZFRvQ2hhbm5lbDsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8V29ya2VyR2xvYmFsU2NvcGVQcm94eSosIFN0cmluZz4gRGVkaWNhdGVkV29ya2Vy
czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVQcm94eSos
IFN0cmluZz4gRGVkaWNhdGVkV29ya2VyczsKICAgICBEZWRpY2F0ZWRXb3JrZXJzIG1fZGVkaWNh
dGVkV29ya2VyczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yV29ya2VyQWdlbnRfaCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4
IGNiOWEyYWI2NjgyYTA1ZDg3OTk0ODNjZjIwNDg2MWQ3ZWRlNjFiM2UuLmNhMTIzOTkxM2QwNjE3
OTJlNmZmNGFmN2RmZWQyNDBkNGIzYjI0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtMzksMjAgKzM5LDE1IEBACiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBEZWJ1Z2dl
ckFnZW50OwotY2xhc3MgSW5zcGVjdG9yQWdlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQogY2xhc3MgQXBwbGljYXRpb25DYWNoZUFnZW50OwogY2xhc3MgQ1NTQWdlbnQ7CiBjbGFzcyBE
YXRhYmFzZUFnZW50OworY2xhc3MgRGVidWdnZXJBZ2VudDsKIGNsYXNzIERPTUFnZW50OwogY2xh
c3MgRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIERPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIExheWVy
VHJlZUFnZW50OwotY2xhc3MgUGFnZTsKK2NsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgUGFn
ZUFnZW50OwogY2xhc3MgUGFnZURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBQYWdlUnVudGltZUFnZW50
OwpAQCAtNjEsOCArNTYsMTMgQEAgY2xhc3MgUmVzb3VyY2VBZ2VudDsKIGNsYXNzIFRpbWVsaW5l
QWdlbnQ7CiBjbGFzcyBXZWJDb25zb2xlQWdlbnQ7CiBjbGFzcyBXb3JrZXJBZ2VudDsKLWNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgV29ya2VyUnVudGltZUFnZW50OworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsK
IAogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RydW1l
bnRpbmdBZ2VudHM+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnN0cnVtZW50aW5nQWdl
bnRzKTsKQEAgLTgwLDYxICs4MCw2MSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckFnZW50
OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JBZ2VudChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
KiBhZ2VudCkgeyBtX2luc3BlY3RvckFnZW50ID0gYWdlbnQ7IH0KIAotICAgIFBhZ2VBZ2VudCog
cGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KLSAgICB2b2lkIHNldFBh
Z2VBZ2VudChQYWdlQWdlbnQqIGFnZW50KSB7IG1fcGFnZUFnZW50ID0gYWdlbnQ7IH0KKyAgICBJ
bnNwZWN0b3I6OlBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdl
bnQ7IH0KKyAgICB2b2lkIHNldFBhZ2VBZ2VudChJbnNwZWN0b3I6OlBhZ2VBZ2VudCogYWdlbnQp
IHsgbV9wYWdlQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgQ1NTQWdlbnQqIGNzc0FnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jc3NBZ2VudDsgfQotICAgIHZvaWQgc2V0Q1NTQWdlbnQoQ1NTQWdlbnQq
IGFnZW50KSB7IG1fY3NzQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6Q1NTQWdlbnQq
IGNzc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9jc3NBZ2VudDsgfQorICAgIHZvaWQgc2V0Q1NT
QWdlbnQoSW5zcGVjdG9yOjpDU1NBZ2VudCogYWdlbnQpIHsgbV9jc3NBZ2VudCA9IGFnZW50OyB9
CiAKLSAgICBXZWJDb25zb2xlQWdlbnQqIHdlYkNvbnNvbGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViQ29uc29sZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRXZWJDb25zb2xlQWdlbnQoV2ViQ29u
c29sZUFnZW50KiBhZ2VudCkgeyBtX3dlYkNvbnNvbGVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5z
cGVjdG9yOjpXZWJDb25zb2xlQWdlbnQqIHdlYkNvbnNvbGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViQ29uc29sZUFnZW50OyB9CisgICAgdm9pZCBzZXRXZWJDb25zb2xlQWdlbnQoSW5zcGVj
dG9yOjpXZWJDb25zb2xlQWdlbnQqIGFnZW50KSB7IG1fd2ViQ29uc29sZUFnZW50ID0gYWdlbnQ7
IH0KIAotICAgIERPTUFnZW50KiBkb21BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQWdlbnQ7
IH0KLSAgICB2b2lkIHNldERPTUFnZW50KERPTUFnZW50KiBhZ2VudCkgeyBtX2RvbUFnZW50ID0g
YWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6OkRPTUFnZW50KiBkb21BZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG9tQWdlbnQ7IH0KKyAgICB2b2lkIHNldERPTUFnZW50KEluc3BlY3Rvcjo6RE9NQWdl
bnQqIGFnZW50KSB7IG1fZG9tQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VBZ2VudDsgfQotICAgIHZv
aWQgc2V0UmVzb3VyY2VBZ2VudChSZXNvdXJjZUFnZW50KiBhZ2VudCkgeyBtX3Jlc291cmNlQWdl
bnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VBZ2VudDsgfQorICAgIHZvaWQgc2V0UmVzb3Vy
Y2VBZ2VudChJbnNwZWN0b3I6OlJlc291cmNlQWdlbnQqIGFnZW50KSB7IG1fcmVzb3VyY2VBZ2Vu
dCA9IGFnZW50OyB9CiAKLSAgICBQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlUnVudGltZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRQYWdlUnVu
dGltZUFnZW50KFBhZ2VSdW50aW1lQWdlbnQqIGFnZW50KSB7IG1fcGFnZVJ1bnRpbWVBZ2VudCA9
IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFn
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlUnVudGltZUFnZW50OyB9CisgICAgdm9pZCBzZXRQ
YWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6UGFnZVJ1bnRpbWVBZ2VudCogYWdlbnQpIHsgbV9w
YWdlUnVudGltZUFnZW50ID0gYWdlbnQ7IH0KIAotICAgIFdvcmtlclJ1bnRpbWVBZ2VudCogd29y
a2VyUnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJSdW50aW1lQWdlbnQ7IH0K
LSAgICB2b2lkIHNldFdvcmtlclJ1bnRpbWVBZ2VudChXb3JrZXJSdW50aW1lQWdlbnQqIGFnZW50
KSB7IG1fd29ya2VyUnVudGltZUFnZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6Oldvcmtl
clJ1bnRpbWVBZ2VudCogd29ya2VyUnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV93b3Jr
ZXJSdW50aW1lQWdlbnQ7IH0KKyAgICB2b2lkIHNldFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0
b3I6OldvcmtlclJ1bnRpbWVBZ2VudCogYWdlbnQpIHsgbV93b3JrZXJSdW50aW1lQWdlbnQgPSBh
Z2VudDsgfQogCi0gICAgVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZWxpbmVBZ2VudDsgfQotICAgIHZvaWQgc2V0VGltZWxpbmVBZ2VudChUaW1lbGlu
ZUFnZW50KiBhZ2VudCkgeyBtX3RpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rv
cjo6VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxp
bmVBZ2VudDsgfQorICAgIHZvaWQgc2V0VGltZWxpbmVBZ2VudChJbnNwZWN0b3I6OlRpbWVsaW5l
QWdlbnQqIGFnZW50KSB7IG1fdGltZWxpbmVBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBUaW1lbGlu
ZUFnZW50KiBwZXJzaXN0ZW50VGltZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lz
dGVudFRpbWVsaW5lQWdlbnQ7IH0KLSAgICB2b2lkIHNldFBlcnNpc3RlbnRUaW1lbGluZUFnZW50
KFRpbWVsaW5lQWdlbnQqIGFnZW50KSB7IG1fcGVyc2lzdGVudFRpbWVsaW5lQWdlbnQgPSBhZ2Vu
dDsgfQorICAgIEluc3BlY3Rvcjo6VGltZWxpbmVBZ2VudCogcGVyc2lzdGVudFRpbWVsaW5lQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRUaW1lbGluZUFnZW50OyB9CisgICAgdm9p
ZCBzZXRQZXJzaXN0ZW50VGltZWxpbmVBZ2VudChJbnNwZWN0b3I6OlRpbWVsaW5lQWdlbnQqIGFn
ZW50KSB7IG1fcGVyc2lzdGVudFRpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQogCi0gICAgRE9NU3Rv
cmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbVN0b3JhZ2VB
Z2VudDsgfQotICAgIHZvaWQgc2V0RE9NU3RvcmFnZUFnZW50KERPTVN0b3JhZ2VBZ2VudCogYWdl
bnQpIHsgbV9kb21TdG9yYWdlQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6RE9NU3Rv
cmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2RvbVN0b3JhZ2VB
Z2VudDsgfQorICAgIHZvaWQgc2V0RE9NU3RvcmFnZUFnZW50KEluc3BlY3Rvcjo6RE9NU3RvcmFn
ZUFnZW50KiBhZ2VudCkgeyBtX2RvbVN0b3JhZ2VBZ2VudCA9IGFnZW50OyB9CiAKICNpZiBFTkFC
TEUoV0VCX1JFUExBWSkKLSAgICBSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGxheUFnZW50OyB9Ci0gICAgdm9pZCBzZXRSZXBsYXlBZ2VudChSZXBsYXlBZ2Vu
dCogYWdlbnQpIHsgbV9yZXBsYXlBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpSZXBs
YXlBZ2VudCogcmVwbGF5QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGxheUFnZW50OyB9Cisg
ICAgdm9pZCBzZXRSZXBsYXlBZ2VudChJbnNwZWN0b3I6OlJlcGxheUFnZW50KiBhZ2VudCkgeyBt
X3JlcGxheUFnZW50ID0gYWdlbnQ7IH0KICNlbmRpZgogCi0gICAgRGF0YWJhc2VBZ2VudCogZGF0
YWJhc2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VBZ2VudDsgfQotICAgIHZvaWQg
c2V0RGF0YWJhc2VBZ2VudChEYXRhYmFzZUFnZW50KiBhZ2VudCkgeyBtX2RhdGFiYXNlQWdlbnQg
PSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6RGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VBZ2VudDsgfQorICAgIHZvaWQgc2V0RGF0YWJhc2VB
Z2VudChJbnNwZWN0b3I6OkRhdGFiYXNlQWdlbnQqIGFnZW50KSB7IG1fZGF0YWJhc2VBZ2VudCA9
IGFnZW50OyB9CiAKLSAgICBBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUFnZW50OyB9Ci0gICAgdm9p
ZCBzZXRBcHBsaWNhdGlvbkNhY2hlQWdlbnQoQXBwbGljYXRpb25DYWNoZUFnZW50KiBhZ2VudCkg
eyBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25DYWNoZUFnZW50OyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hl
QWdlbnQoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFnZW50KSB7IG1fYXBwbGlj
YXRpb25DYWNoZUFnZW50ID0gYWdlbnQ7IH0KIAogICAgIEluc3BlY3Rvcjo6RGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudDsgfQogICAg
IHZvaWQgc2V0RGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OkRlYnVnZ2VyQWdlbnQqIGFnZW50KSB7
IG1fZGVidWdnZXJBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBQYWdlRGVidWdnZXJBZ2VudCogcGFn
ZURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VEZWJ1Z2dlckFnZW50OyB9Ci0g
ICAgdm9pZCBzZXRQYWdlRGVidWdnZXJBZ2VudChQYWdlRGVidWdnZXJBZ2VudCogYWdlbnQpIHsg
bV9wYWdlRGVidWdnZXJBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yOjpQYWdlRGVidWdn
ZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VEZWJ1Z2dl
ckFnZW50OyB9CisgICAgdm9pZCBzZXRQYWdlRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OlBhZ2VE
ZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX3BhZ2VEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIAot
ICAgIERPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvbURlYnVnZ2VyQWdlbnQ7IH0KLSAgICB2b2lkIHNldERPTURlYnVnZ2VyQWdlbnQoRE9NRGVi
dWdnZXJBZ2VudCogYWdlbnQpIHsgbV9kb21EZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KKyAgICBJ
bnNwZWN0b3I6OkRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RvbURlYnVnZ2VyQWdlbnQ7IH0KKyAgICB2b2lkIHNldERPTURlYnVnZ2VyQWdlbnQo
SW5zcGVjdG9yOjpET01EZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX2RvbURlYnVnZ2VyQWdlbnQg
PSBhZ2VudDsgfQogCi0gICAgV29ya2VyQWdlbnQqIHdvcmtlckFnZW50KCkgY29uc3QgeyByZXR1
cm4gbV93b3JrZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0V29ya2VyQWdlbnQoV29ya2VyQWdlbnQq
IGFnZW50KSB7IG1fd29ya2VyQWdlbnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3Rvcjo6V29ya2Vy
QWdlbnQqIHdvcmtlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJBZ2VudDsgfQorICAg
IHZvaWQgc2V0V29ya2VyQWdlbnQoSW5zcGVjdG9yOjpXb3JrZXJBZ2VudCogYWdlbnQpIHsgbV93
b3JrZXJBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJlZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRMYXll
clRyZWVBZ2VudChMYXllclRyZWVBZ2VudCogYWdlbnQpIHsgbV9sYXllclRyZWVBZ2VudCA9IGFn
ZW50OyB9CisgICAgSW5zcGVjdG9yOjpMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQoKSBj
b25zdCB7IHJldHVybiBtX2xheWVyVHJlZUFnZW50OyB9CisgICAgdm9pZCBzZXRMYXllclRyZWVB
Z2VudChJbnNwZWN0b3I6OkxheWVyVHJlZUFnZW50KiBhZ2VudCkgeyBtX2xheWVyVHJlZUFnZW50
ID0gYWdlbnQ7IH0KIAogcHJpdmF0ZToKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRW52aXJvbm1lbnQmKTsKQEAgLTE0MiwyNiArMTQyLDI2IEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKIAog
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAgUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBDU1NBZ2VudCogbV9jc3NBZ2VudDsKLSAgICBMYXll
clRyZWVBZ2VudCogbV9sYXllclRyZWVBZ2VudDsKLSAgICBXZWJDb25zb2xlQWdlbnQqIG1fd2Vi
Q29uc29sZUFnZW50OwotICAgIERPTUFnZW50KiBtX2RvbUFnZW50OwotICAgIFJlc291cmNlQWdl
bnQqIG1fcmVzb3VyY2VBZ2VudDsKLSAgICBQYWdlUnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1l
QWdlbnQ7Ci0gICAgV29ya2VyUnVudGltZUFnZW50KiBtX3dvcmtlclJ1bnRpbWVBZ2VudDsKLSAg
ICBUaW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7Ci0gICAgVGltZWxpbmVBZ2VudCogbV9w
ZXJzaXN0ZW50VGltZWxpbmVBZ2VudDsKLSAgICBET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFn
ZUFnZW50OworICAgIEluc3BlY3Rvcjo6UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKKyAgICBJbnNw
ZWN0b3I6OkNTU0FnZW50KiBtX2Nzc0FnZW50OworICAgIEluc3BlY3Rvcjo6TGF5ZXJUcmVlQWdl
bnQqIG1fbGF5ZXJUcmVlQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpXZWJDb25zb2xlQWdlbnQqIG1f
d2ViQ29uc29sZUFnZW50OworICAgIEluc3BlY3Rvcjo6RE9NQWdlbnQqIG1fZG9tQWdlbnQ7Cisg
ICAgSW5zcGVjdG9yOjpSZXNvdXJjZUFnZW50KiBtX3Jlc291cmNlQWdlbnQ7CisgICAgSW5zcGVj
dG9yOjpQYWdlUnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQ7CisgICAgSW5zcGVjdG9y
OjpXb3JrZXJSdW50aW1lQWdlbnQqIG1fd29ya2VyUnVudGltZUFnZW50OworICAgIEluc3BlY3Rv
cjo6VGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OworICAgIEluc3BlY3Rvcjo6VGltZWxp
bmVBZ2VudCogbV9wZXJzaXN0ZW50VGltZWxpbmVBZ2VudDsKKyAgICBJbnNwZWN0b3I6OkRPTVN0
b3JhZ2VBZ2VudCogbV9kb21TdG9yYWdlQWdlbnQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0g
ICAgUmVwbGF5QWdlbnQqIG1fcmVwbGF5QWdlbnQ7CisgICAgSW5zcGVjdG9yOjpSZXBsYXlBZ2Vu
dCogbV9yZXBsYXlBZ2VudDsKICNlbmRpZgotICAgIERhdGFiYXNlQWdlbnQqIG1fZGF0YWJhc2VB
Z2VudDsKLSAgICBBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIG1fYXBwbGljYXRpb25DYWNoZUFnZW50
OworICAgIEluc3BlY3Rvcjo6RGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OworICAgIElu
c3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUFnZW50KiBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudDsK
ICAgICBJbnNwZWN0b3I6OkRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBQYWdl
RGVidWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKLSAgICBET01EZWJ1Z2dlckFnZW50
KiBtX2RvbURlYnVnZ2VyQWdlbnQ7Ci0gICAgV29ya2VyQWdlbnQqIG1fd29ya2VyQWdlbnQ7Cisg
ICAgSW5zcGVjdG9yOjpQYWdlRGVidWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKKyAg
ICBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKKyAgICBJ
bnNwZWN0b3I6OldvcmtlckFnZW50KiBtX3dvcmtlckFnZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDgx
ZDc5ZWJmYjA5OTIwNjE0ODgwZjQ2ZDk5NzY4ODI0ZDhhNWU2Yi4uZTA4YTQyMmRkYzExNzUxMmY5
Nzk5YWM1MzJkOTA2MDIzZDVlYjIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMTksNCArMzE5LDQgQEAgYm9vbCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlRnJlZVNwYWNlKHNpemVfdCBzaXplKQogICAgIHJldHVy
biB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKaW5kZXggMjViNTA4YWZiOTVhMWZlZDk0ZmI2ZTNlMTRhNmMyZmVkMjViZGIzOS4uN2JiZmFl
ZjNkMzdjODFlYjI3OTYyYTllOTg1MWQ4MjYwZDY3ODNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTc1LDggKzc1LDggQEAgcHVi
bGljOgogICAgICAgICBib29sIGlzQ29udGVudEV2aWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29udGVudEV2aWN0ZWQ7IH0KICAgICAgICAgdW5zaWduZWQgZXZpY3RDb250ZW50KCk7CiAKLSAg
ICAgICAgUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgICAgICB2b2lkIHNldFR5cGUoUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSkg
eyBtX3R5cGUgPSB0eXBlOyB9CisgICAgICAgIEluc3BlY3Rvcjo6UGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICB2b2lkIHNldFR5
cGUoSW5zcGVjdG9yOjpQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5
cGU7IH0KIAogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBtX2h0
dHBTdGF0dXNDb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50IGh0dHBT
dGF0dXNDb2RlKSB7IG1faHR0cFN0YXR1c0NvZGUgPSBodHRwU3RhdHVzQ29kZTsgfQpAQCAtODQs
MTQgKzg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWUoKSBj
b25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7IH0KICAgICAgICAgdm9pZCBzZXRUZXh0
RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkgeyBtX3RleHRFbmNv
ZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJlZigp
OyB9Ci0gICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4m
JiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURjo6bW92ZShkZWNvZGVyKTsgfQorICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0
cjxXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0g
V1RGOjptb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQg
c2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RG
Ojptb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZv
aWQgc2V0QnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
YnVmZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7IH0KIAotICAgICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlOyB9Ci0gICAg
ICAgIHZvaWQgc2V0Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KSB7IG1fY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZTsgfQorICAgICAgICBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
ZFJlc291cmNlOyB9CisgICAgICAgIHZvaWQgc2V0Q2FjaGVkUmVzb3VyY2UoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKSB7IG1fY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRS
ZXNvdXJjZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CkBAIC0xMDUsMTYgKzEwNSwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5nIG1fY29udGVudDsKICAgICAgICAg
Ym9vbCBtX2Jhc2U2NEVuY29kZWQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVm
ZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50RXZpY3RlZDsKLSAgICAgICAgUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgbV90eXBlOworICAgICAgICBJbnNwZWN0b3I6OlBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlIG1fdHlwZTsKICAgICAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAKICAgICAg
ICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKLSAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2U7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgICAgICBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZTsKICAgICB9OwogCiAgICAgTmV0d29y
a1Jlc291cmNlc0RhdGEoKTsKQEAgLTEyMiwxNiArMTIyLDE2IEBAIHB1YmxpYzoKICAgICB+TmV0
d29ya1Jlc291cmNlc0RhdGEoKTsKIAogICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKTsKLSAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7Ci0gICAgUGFn
ZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0
b3I6OlBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKKyAgICBJbnNwZWN0b3I6OlBhZ2VBZ2VudDo6
UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkID0gZmFsc2UpOwogICAgIHZvaWQgbWF5
YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVu
dChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7Ci0gICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBh
ZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2UqKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkKTsKLSAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOworICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hl
ZFJlc291cmNlKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjbGVhcihjb25z
dCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCiBwcml2YXRlOgpAQCAt
MTQ4LDYgKzE0OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbWF4aW11bVNpbmdsZVJlc291
cmNlQ29udGVudFNpemU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKE5ldHdvcmtSZXNvdXJjZXNEYXRh
X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5k
ZXggMTMyOGM3ZTkzYzdkMDU0NDc0ZWNkMWE1M2Y4YjZlYWExY2IwN2Y5My4uYmZmYTY0MTc0OGYz
YWI5Yjg0ZWNkZDMyMzc2YThjODRjZjQ4Mjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzYsOSArMzYsOSBAQAogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAotdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUGFnZUNvbnNvbGVBZ2VudDo6UGFn
ZUNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgRE9NQWdlbnQqIGRvbUFnZW50KQogICAgIDogV2ViQ29uc29sZUFnZW50KGluamVjdGVk
U2NyaXB0TWFuYWdlcikKQEAgLTc2LDQgKzc2LDQgQEAgdm9pZCBQYWdlQ29uc29sZUFnZW50Ojph
ZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAg
ICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VDb25zb2xlQWdlbnQuaAppbmRleCBkZWUyOWNmYjkyN2QzOTNmNzNkNDMxMzkyYWYwODViNzAw
MGMwMDQ2Li42NjNiYWQyMmE3NzI2NjFiMzgzYjgzY2JlNWU5ZTFmMmY0NTYyNjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgKQEAgLTMzLDkgKzMzLDEw
IEBACiAKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIERPTUFnZW50OworY2xhc3MgV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogCiBjbGFzcyBQYWdlQ29uc29sZUFnZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvbnNvbGVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbnNv
bGVBZ2VudCk7CkBAIC01Miw2ICs1Myw2IEBAIHByaXZhdGU6CiAgICAgRE9NQWdlbnQqIG1fZG9t
QWdlbnQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKFBhZ2VDb25zb2xlQWdlbnRfaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDhjZDRmZDZl
YmE1ZWJlYWNlMDc5Mjg0MjliODY0NWU0M2E3ZDBjM2IuLjc2OWNlMDIzMmIyZjJlMzQyMjAzMDUx
OTQ4YWRhOWI1NThiNzFhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNDUsOSArNDUsOSBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgog
Ci11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IFBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDog
V2ViRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCkBAIC0xNDQsNCArMTQ0LDQgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkQ2xlYXJN
YWluRnJhbWVXaW5kb3dPYmplY3QoKQogICAgIGRpZENsZWFyR2xvYmFsT2JqZWN0KCk7CiB9CiAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA2NDQyY2E5ZWQ2
OTA1MTAxNzBmZGQ5NGQ5NGYxNTY1MTkyZDMzMjhjLi4xZDgwNjg3OGUyZmZkMWZjMDQzYjNkYjE3
MWFiZGVmOWFiOGQ0YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaApAQCAtMzUsMjMgKzM1LDIzIEBACiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2Vu
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7Ci1j
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBZ2VudDsK
IGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIFdlYkRlYnVnZ2VyQWdl
bnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlRGVidWdnZXJBZ2VudChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBQ
YWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2VB
Z2VudCosIFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVi
dWdnZXJBZ2VudCgpIHsgfQogCiAgICAgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVj
dCgpOwogCi0gICAgdmlydHVhbCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2Vy
dmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgZW5hYmxlKCkgb3ZlcnJpZGU7CkBAIC02NywxNCArNjcsMTQgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92ZXJyaWRlOwogCiAgICAgUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKLSAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7Ci0gICAgUGFnZVNj
cmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheSogbV9vdmVybGF5OworICAgIFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZl
ciBtX3NjcmlwdERlYnVnU2VydmVyOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChQYWdlRGVidWdnZXJB
Z2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
CmluZGV4IDE4ODcxYzFjOTJlYWQ0OWFlZDQ4NDY2ZTEwY2M5NDQ2ZDQyOWY5ZTYuLjRkYWI4MDRi
N2JhMmNhMzQ0OGFjY2RkMWYyNjM0OWNkMzg1YzFmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAKIAogdXNpbmcg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dERlc2NyaXB0aW9u
OwogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBQYWdlUnVu
dGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlLCBQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6
IFJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC02MCwxMyArNjAsMTMgQEAg
UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlciwKIHsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVudGltZUJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1l
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAK
LXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5oCmluZGV4IGE0MGE1YTQwNDFlOGJjZTQxNGEwNGRhM2FmMTYyNmJhNjFjMGRmNWUuLjdiYjUy
MTRlZWFmYTcyODM0ODUxMGVlZjIxMDA2NDA5OTY0YWJkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtMzgsNDQgKzM4LDQ1IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgRXhlY1N0YXRlOwogfQogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNs
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBj
bGFzcyBGcmFtZTsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdlQWdlbnQ7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjsKK2NsYXNzIFBhZ2VBZ2VudDsKKyAgICAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCi1jbGFzcyBQYWdlUnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rv
cjo6UnVudGltZUFnZW50IHsKK2NsYXNzIFBhZ2VSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMg
UnVudGltZUFnZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBQYWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgUGFn
ZSosIFBhZ2VBZ2VudCopOworICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiwgV2ViQ29yZTo6UGFnZSosIFBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VSdW50
aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbiBjYWxsYmFja3MuCi0gICAgdm9pZCBkaWRDcmVhdGVNYWluV29ybGRDb250ZXh0
KEZyYW1lJik7CisgICAgdm9pZCBkaWRDcmVhdGVNYWluV29ybGRDb250ZXh0KFdlYkNvcmU6OkZy
YW1lJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcG9ydEV4ZWN1dGlvbkNvbnRl
eHRDcmVhdGlvbigpOwotICAgIHZvaWQgbm90aWZ5Q29udGV4dENyZWF0ZWQoY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc1BhZ2VD
b250ZXh0KTsKKyAgICB2b2lkIG5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgSlNDOjpFeGVjU3RhdGUqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNQ
YWdlQ29udGV4dCk7CiAKLSAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CisgICAgV2ViQ29yZTo6
UGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIFBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW50
aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wg
bV9tYWluV29ybGRDb250ZXh0Q3JlYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmY0NzI1N2QzNjA3NDZmNjRiMjk5OWM5ODYx
YTc1YjBjODI5NDAxOC4uNjg4OWQxZTlkY2UwZjc5NDNhNGVjOWYyYjAxMTQxZWNkYzU4MzJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTM3
LDkgKzM3LDkgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIFdlYkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIDogQ29uc29sZUFn
ZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTEwOCw0ICsxMDgsNCBAQCB2b2lkIFdlYkNv
bnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgUmVzbwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJM
KCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCmluZGV4IDM2N2UyNzg1MzZiNzcwYWFiMGY0NjI2NmMw
MzVlOGRkZTA0NmQ1NmUuLjg5MmU5MzM2NWQ0YzkwMWQ4ZjFjYWU2YTdmZjIxMWMzZWE5OTkzYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKQEAgLTI5LDE0
ICsyOSwxNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgewogY2xhc3MgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgV2ViQ29uc29sZUFnZW50IDogcHVibGljIEluc3Bl
Y3Rvcjo6Q29uc29sZUFnZW50IHsKK2NsYXNzIFdlYkNvbnNvbGVBZ2VudCA6IHB1YmxpYyBDb25z
b2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00NSwxNiArNDgsMTYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVkKEVycm9y
U3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZvaWQgZnJhbWVX
aW5kb3dEaXNjYXJkZWQoRE9NV2luZG93Kik7CisgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRl
ZChXZWJDb3JlOjpET01XaW5kb3cqKTsKIAogICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyh1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENv
bHVtbk51bWJlcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9tb25p
dG9yaW5nWEhSRW5hYmxlZDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoV2ViQ29uc29sZUFnZW50X2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
NzVhMGY1YjE3NjkzYmRhMGRmNzU4Yjg4ZTZiMTIwNWQwMjNlZmU5ZC4uN2VlMmJlNmVjMzkwMTE4
MDViMjQxNjUxZmFhOWMxODA0YjlmMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBXZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgIDogRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCkBAIC01MCw0ICs1MCw0IEBAIHZvaWQgV2ViRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShi
b29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXREZWJ1
Z2dlckFnZW50KG51bGxwdHIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
ZWJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJB
Z2VudC5oCmluZGV4IDI1YWViMTI1MGVlZjQzODAyNDQ0ZjU1OGJiZTVkY2NlN2I2NTExZjguLjc3
MThhMDlhNWQ2YjZmY2IyOTg3OTI4ZmVmZThjNjhiMzYzYzcwODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaApAQCAtMjksMjQgKzI5LDI5IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK30KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFBhZ2VBZ2VudDsKKwogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIFdlYkRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpE
ZWJ1Z2dlckFnZW50IHsKK2NsYXNzIFdlYkRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgRGVidWdnZXJB
Z2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViRGVidWdnZXJBZ2VudCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2ViRGVidWdnZXJBZ2VudChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
KyAgICBXZWJEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIFdlYkNvcmU6Oklu
c3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5XZWJEZWJ1Z2dlckFnZW50KCkgeyB9
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKIAot
ICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBXZWJD
b3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiB9OwogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vICFkZWZpbmVkKFdlYkRlYnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOWY0YWY0MjY5
M2VjNTc1OTUzMTMzOTQ0NjBiMTkwNWRmZTBhZDU4Ny4uMDZlYmYyYTk4NDMzZGJjNjQ2ZjNjZjQy
OGQ4MjdkYmJjZTAzNWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dl
YkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRl
ICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RvckVudmlyb25tZW50
JiBlbnZpcm9ubWVudCwgUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IGhvc3QpCiAgICAg
OiBJbmplY3RlZFNjcmlwdE1hbmFnZXIoZW52aXJvbm1lbnQsIGhvc3QpCkBAIC04MSw0ICs4MSw0
IEBAIHZvaWQgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRz
Rm9yKERPTVdpbmRvdyogd2luZG93KQogICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUo
c2NyaXB0U3RhdGVzVG9SZW1vdmVbaV0pOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCBlOGZjNDUyMmFiMTIxOWE3YTMwNTU0
M2FkZDkyMzFhOThmZjBhMDY5Li42MmViNDRhNTQxYzEwZTU1NWUyNWIxYjFlNjdlNTA0NDE4MWIx
Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oCkBAIC0zMSwyNyArMzEsMjkgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgRE9NV2luZG93OworfQorCituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIGZpbmFsIDog
cHVibGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKK2NsYXNzIFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdE1hbmFnZXIgewog
cHVibGljOgotICAgIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0b3I6Okluc3BlY3Rv
ckVudmlyb25tZW50JiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0SG9zdD4p
OworICAgIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0b3JFbnZpcm9ubWVudCYsIFBh
c3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0Pik7CiAgICAgdmlydHVhbCB+V2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkgeyB9CiAKLSAgICBDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5l
QVBJSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZExpbmVBUElIb3N0LmdldCgpOyB9Cisg
ICAgV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1hbmRMaW5lQVBJSG9zdC5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2Ny
aXB0c0ZvcihET01XaW5kb3cqKTsKKyAgICB2b2lkIGRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3Io
V2ViQ29yZTo6RE9NV2luZG93Kik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlSW5qZWN0ZWRTY3JpcHQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KEluamVjdGVkU2NyaXB0
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8Q29tbWFuZExpbmVBUElIb3N0PiBt
X2NvbW1hbmRMaW5lQVBJSG9zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29tbWFuZExpbmVBUElI
b3N0PiBtX2NvbW1hbmRMaW5lQVBJSG9zdDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoV2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJD
b25zb2xlQWdlbnQuY3BwCmluZGV4IGRjMWNiNzlkYjBiMDliYjdjZWY1YjkwOGQ1NTFmNzBjMzA1
MDhkNzQuLmMzZjU5MDI4YjdmZWZiOGE0MjI0NGZjYThiYmZjZmE5NmI5ZmFiNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29uc29sZUFn
ZW50LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIFdv
cmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIDogV2ViQ29uc29sZUFnZW50KGluamVj
dGVkU2NyaXB0TWFuYWdlcikKQEAgLTQ1LDQgKzQ1LDQgQEAgdm9pZCBXb3JrZXJDb25zb2xlQWdl
bnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yLCBpbnQpCiAgICAgZXJyb3Ig
PSBBU0NJSUxpdGVyYWwoImFkZEluc3BlY3RlZE5vZGUgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29y
a2VycyIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaApp
bmRleCA4ODk3YjUwZGUwNThmYmIyY2JmZTQ5MjZjMzU5OTJmYjUyODhlYmQyLi5lYTJkMzkzYTlk
NGFkNzFiOGVjZDIyMGU1MDE5ODUyNzhmYWUyNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRl
ICJXZWJDb25zb2xlQWdlbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIGNsYXNzIFdvcmtlckNvbnNvbGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckNvbnNvbGVBZ2Vu
dCk7CkBAIC00OCw2ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZEluc3Bl
Y3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8g
IWRlZmluZWQoV29ya2VyQ29uc29sZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMjI1ZDU1M2U4YmRkODFmY2ZhYjdh
YWNmNjRjZDUwYWQ1MDI4NDJjMS4uZTJjMjkyODhjM2JkNTRiOGMyNTZjZGFlYzExZmUzMmRkZjg2
ZDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsKIApAQCAtMTU2LDQgKzE1Niw0IEBA
IHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBtdXRlIGNvbnNvbGUgZm9yIHdvcmtlcnMuCiB9CiAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggZDg3OWQxODlhMWZmZjA0MGNjZmRi
OGUyMTZhYjlhNDA3NTg5MThjMC4uMDMzMWRmYzJhMTY3ZDFlZTBmZWM3Y2RiY2JhOTRjZGUwMDQ4
MTFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oCkBAIC0zNSwzNCArMzUsMzYgQEAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwog
Y2xhc3MgV29ya2VyVGhyZWFkOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3Mg
V29ya2VyRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVudGluZ0FnZW50cyosIFdvcmtl
ckdsb2JhbFNjb3BlKik7CisgICAgV29ya2VyRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzKiwgV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGUqKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCk7CiAKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVidWdnZXJUYXNrTW9kZTsKLSAgICBzdGF0aWMgdm9pZCBpbnRl
cnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKFdvcmtlclRocmVhZCopOworICAgIHN0
YXRpYyB2b2lkIGludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMoV2ViQ29yZTo6
V29ya2VyVGhyZWFkKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nU2Ny
aXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFdvcmtlclNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZv
ckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0
RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBtX3Nj
cmlwdERlYnVnU2VydmVyOwotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX2luc3BlY3RlZFdvcmtl
ckdsb2JhbFNjb3BlOworICAgIFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyIG1fc2Ny
aXB0RGVidWdTZXJ2ZXI7CisgICAgV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVj
dGVkV29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKFdvcmtlckRlYnVnZ2Vy
QWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oCmluZGV4IDk2NzQwODNjZGVjYWRjOTFlNTAzMDIyMjdmZGM0ZDFhOTE4
YmVhMDQuLjhkYzQ1YjE5NTI1NzBkYzliYjEyYmY0Nzc1ZmNkMzg5ZjgxMjRhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtNDEsMTMgKzQxLDE2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBXZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CitjbGFzcyBXb3JrZXJSdW50aW1lQWdlbnQ7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2VyUnVudGltZUFnZW50OwogCiBjbGFzcyBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRW52aXJvbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIpOwpAQCAtNzUsOCArNzgsOCBAQCBwcml2YXRlOgogCiAgICAgV29ya2VyR2xv
YmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgUmVmUHRyPEluc3RydW1lbnRpbmdB
Z2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBXb3JrZXJS
dW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OldlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Cisg
ICAgSW5zcGVjdG9yOjpXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OwogICAgIElu
c3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVsOwogICAgIFJlZjxXVEY6
OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDYwZjY0ZDQzMjJiOTQwZjBlYzBi
NWU4MTJlYTg0NjQwYjkwNjY0YjIuLmQ4YWMwNDIxZGRlYTQ4MDdmZGI1NzIyZTU4YTEzZTgwMWJj
MTZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgogCi11
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBXb3JrZXJSdW50aW1l
QWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQogICAg
IDogUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTUzLDEyICs1MywxMiBA
QCBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYQogewogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5k
Q2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIFdvcmtl
clJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCkBAIC0x
MDYsNCArMTA2LDQgQEAgdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OnBhdXNlV29ya2VyR2xvYmFs
U2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQpCiAgICAgfSB3aGlsZSAocmVzdWx0ID09
IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZCAmJiBtX3BhdXNlZCk7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IGYxZmQ4ZTQ5ZTc2NjFlNDY3
Yjc2Nzk0NzdiODA1OTQ5M2Y4YTYxZGUuLjUyM2M3ZTMwOTZmYTcxMjc5YzEwYWNlY2RlZGE5MjY0
OTg1NWM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFn
ZW50LmgKQEAgLTM0LDMyICszNCwzNSBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgV29ya2VyUnVudGltZUFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6UnVudGltZUFnZW50IHsKK2NsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBm
aW5hbCA6IHB1YmxpYyBSdW50aW1lQWdlbnQgewogcHVibGljOgotICAgIFdvcmtlclJ1bnRpbWVB
Z2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFdvcmtlckdsb2JhbFNjb3Bl
Kik7CisgICAgV29ya2VyUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIFdlYkNv
cmU6Oldvcmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcnVuKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhdXNlV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKKyAgICB2b2lkIHBhdXNlV29ya2VyR2xvYmFs
U2NvcGUoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEpTQzo6Vk0mIGdsb2JhbFZNKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0
IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwot
ICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
KyAgICBXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKKyAg
ICBSZWZQdHI8UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
ICAgIGJvb2wgbV9wYXVzZWQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclBhZ2VyQWdl
bnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKaW5kZXggNzg0NWI2MWZhOGRjZmFmOWY2N2ZhYTBkOTQyNWQwZjliMmI1ZDYxNS4uOGQ4NzE4
OTliYmJiZDJkNTMzYTk5OGE5NzlmZjJhZjM0N2YxNTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDggQEAKICNp
bmNsdWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKK3VzaW5nIEluc3BlY3Rvcjo6V29ya2VyRGVidWdnZXJBZ2VudDsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>