<?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>229651</bug_id>
          
          <creation_ts>2021-08-28 16:13:08 -0700</creation_ts>
          <short_desc>[JSC] Implement Temporal.Calendar</short_desc>
          <delta_ts>2021-08-30 18:57:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philip.chimento</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788348</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-28 16:13:08 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788364</commentid>
    <comment_count>1</comment_count>
      <attachid>436730</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-28 23:21:48 -0700</bug_when>
    <thetext>Created attachment 436730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788373</commentid>
    <comment_count>2</comment_count>
      <attachid>436735</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-29 03:41:15 -0700</bug_when>
    <thetext>Created attachment 436735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788443</commentid>
    <comment_count>3</comment_count>
      <attachid>436757</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-29 22:42:43 -0700</bug_when>
    <thetext>Created attachment 436757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788466</commentid>
    <comment_count>4</comment_count>
      <attachid>436761</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 03:00:33 -0700</bug_when>
    <thetext>Created attachment 436761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788600</commentid>
    <comment_count>5</comment_count>
      <attachid>436799</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 11:56:14 -0700</bug_when>
    <thetext>Created attachment 436799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788612</commentid>
    <comment_count>6</comment_count>
      <attachid>436799</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-08-30 12:24:00 -0700</bug_when>
    <thetext>Comment on attachment 436799
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1594
&gt; +            if (string.is8Bit())

I believe all the BCP47 identifiers are ASCII-only, by definition?

&gt; Source/JavaScriptCore/runtime/TemporalCalendarPrototype.cpp:98
&gt; +        return throwVMTypeError(globalObject, scope, &quot;Temporal.Calendar.prototype.fields called on value that&apos;s not an object initialized as a Calendar&quot;_s);

As in the Duration patch I think the brand check exception message would be clearer to developers without &quot;an object initialized as&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788621</commentid>
    <comment_count>7</comment_count>
      <attachid>436799</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 12:45:00 -0700</bug_when>
    <thetext>Comment on attachment 436799
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1594
&gt;&gt; +            if (string.is8Bit())
&gt; 
&gt; I believe all the BCP47 identifiers are ASCII-only, by definition?

This is8Bit is WTF::String implementation detail, and it is possible that ASCII-only string can get 16bit strings.
And it would be possible to make String 16bit internally in some cases (e.g. string is determined to be shared with the existing 16bit string). So putting both cases is better for safety and correctness :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788755</commentid>
    <comment_count>8</comment_count>
      <attachid>436799</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-08-30 18:04:05 -0700</bug_when>
    <thetext>Comment on attachment 436799
Patch

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

Looks good, given Philip&apos;s comments and the resolution of the Slack thread about implementation-definedness.

&gt; Source/WTF/ChangeLog:11
&gt; +        * wtf/text/StringImpl.cpp:
&gt; +        (WTF::StringImpl::createStaticStringImpl):
&gt; +        * wtf/text/StringImpl.h:
&gt; +        (WTF::StringImpl::createStaticStringImpl):

I think this deserves a brief explanation. :)

&gt; JSTests/stress/temporal-calendar.js:80
&gt; +        password: &apos;hunter2&apos;, // Note: Don&apos;t really store passwords like that

🤣</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788761</commentid>
    <comment_count>9</comment_count>
      <attachid>436799</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 18:23:50 -0700</bug_when>
    <thetext>Comment on attachment 436799
Patch

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

&gt;&gt; Source/WTF/ChangeLog:11
&gt;&gt; +        (WTF::StringImpl::createStaticStringImpl):
&gt; 
&gt; I think this deserves a brief explanation. :)

Added :)

&gt;&gt; Source/JavaScriptCore/runtime/TemporalCalendarPrototype.cpp:98
&gt;&gt; +        return throwVMTypeError(globalObject, scope, &quot;Temporal.Calendar.prototype.fields called on value that&apos;s not an object initialized as a Calendar&quot;_s);
&gt; 
&gt; As in the Duration patch I think the brand check exception message would be clearer to developers without &quot;an object initialized as&quot;

Changed to drop `an object initialized as...` part :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788767</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 18:56:41 -0700</bug_when>
    <thetext>Committed r281788 (241125@main): &lt;https://commits.webkit.org/241125@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788768</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-30 18:57:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/82559111&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436730</attachid>
            <date>2021-08-28 23:21:48 -0700</date>
            <delta_ts>2021-08-29 03:41:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229651-20210828232147.patch</filename>
            <type>text/plain</type>
            <size>58159</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzczYmNmZGE5NGMwYjMzODhmYmQ3ZTI2YWNhZDg0MzMyYjdmNTIxLi43MzY2MTQ0YTQ1NTIxODcz
MDgyNmFhNmE0MDUzY2FlMzhjNjQzZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAyMS0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjppbnRsQXZhaWxhYmxlQ2FsZW5kYXJzKToKKyAgICAgICAgKEpT
Qzo6aXNvODYwMUNhbGVuZGFySUQpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDYWxlbmRhcnMp
OgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhbGVuZGFyU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxDYWxlbmRhcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6VGVtcG9y
YWxDYWxlbmRhcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXI6OmlzQnVpbHRpbkNh
bGVuZGFyKToKKyAgICAgICAgKEpTQzo6cGFyc2VUZW1wb3JhbENhbGVuZGFyU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6ZnJvbSk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3I6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlOjpUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA4LTI3ICBTdGVwaGFu
IFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25d
W0NNYWtlXSBBZGQgY29udHJvbCBvdmVyIHdoZXRoZXIgSmF2YVNjcmlwdENvcmUgc2hvdWxkIGJl
IHNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBjYzQwZjI2MTY1ODYxNDgzODA0NzMyZDg5MTE4M2Q4YzU4Y2Y4OTI4Li4z
OWFlODY1MGMxMGFlMWMwZWMzZDcxNjQ0MjJmZTg1MTk2N2IxNTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkNhbGVuZGFyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk2NTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwpOgorCiAyMDIxLTA4LTI4ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gRml4IHN0YXRpYyBhbmFseXplciB3
YXJuaW5ncyBhYm91dCBudWxscHRyIGRlcmVmcyBpbiBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVy
cygpIGFuZCB0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA0ZTBlYWZmMWI2MjM5NzFiMWJjOTM4MDk4ZmFiNWJiZjg4YTBlODk1
Li41OTMwNmU1ZDM4ZWU2MDg5ZjJiNTMwNWQ1MGIwZGY5NGMxN2ZlOGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDcsNiArMTA3LDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90
b3R5cGUuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCisg
ICAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCiAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CmluZGV4IGQ3MWE4MGQ2N2ZkODM0ZTBkYTNkYjlhZWIzZGMwNzkwYzg3MzhmYWMuLjEyMDI1ZWEw
MzlhYWI2NzU3MmMyMmQzN2UzODJjMzI0OGNkOGI0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjksNiAr
MTY5LDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAog
JChQUk9KRUNUX0RJUikvdWNkL0Nhc2VGb2xkaW5nLnR4dAogJChQUk9KRUNUX0RJUikvdWNkL0Rl
cml2ZWRCaW5hcnlQcm9wZXJ0aWVzLnR4dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDljZmZlOWFkYmRhYjU0
Y2Y3NzUzYmQ5N2MyNWQ4MWRiYzcwNTE4MjAuLjAxNmRhOGY4NWM5OTk4ZmM5ZDEzYTczMjIxOGE4
NDEzOWUyYzIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTY2LDYgKzY2LDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1N0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvU3RyaW5nUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvU3ltYm9sQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TeW1ib2xQcm90b3R5cGUu
bHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9Vbmljb2RlUGF0dGVyblRhYmxlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvV2FzbUIzSVJHZW5lcmF0b3JJ
bmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
NzU0MmM3Zjc3NDY1ZTI2ZTE5ZDRhNjhhNWRiNzYwOTFmZGQ0NjUzOS4uYzgyY2YyNjFiYWEwMzM5
Y2VjMmQ0OTNlNGVkZGEyN2MwNTA3YzA0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE5MSw2ICsxOTEsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBc
CiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAgICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQu
aCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwKKyAgICBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IubHV0LmggXAorICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggXAog
ICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5s
dXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MDE5NmUyYzY3MDIzYzgx
MGQ2MmYyNTA5NjgzYjgxM2YxZmYwNjguLjIzY2JiMjk4Y2ViNjRiNzhjNjAxODFjMmU0ZmVkYjlm
Mzk4NzFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ3LDYgKzE4NDcs
OSBAQAogCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyog
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMyQzNDNjkyM0U5NEMxRTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJDM0M2
ODIzRTk0QzFFMDBCQzk3QzAgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCAqLzsgfTsK
KwkJRTMyRDRERTcyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMkQ0REUx
MjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmggKi87IH07CisJ
CUUzMkQ0REU5MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJENERFMzI2REFGRDQzMDBE
NDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovOyB9OworCQlFMzJENERFQTI2REFGRDQzMDBE
NDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJENERFNDI2REFGRDQzMDBENDUzM0EgLyog
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMzA5NUREMjMyMTBBMUIw
MEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzMwOTVEQzIzMjEwQTE0MDBFQjc4NTYgLyog
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBH
bG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzM0Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2MUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xOTAyLDYgKzE5MDUsOCBAQAogCQlFMzlCRjM5OTIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9s
VGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzlCRjM5ODIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9sVGFibGVJbmxpbmVzLmggKi87
IH07CiAJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQz
OTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEOEIyRTIzMDIxRTI2MDAyNjU4NTIg
LyogV2FzbU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOUQ4QjJEMjMwMjFFMUUwMDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5oICov
OyB9OworCQlFMzlEQTFEQTI2REI1RTRDMDAxMDA0MzcgLyogVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1
dC5oICovOyB9OworCQlFMzlEQTFEQjI2REI1RTUxMDAxMDA0MzcgLyogVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25z
dHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlFRUFGMzIyODEyNDUw
MDA4NDc0RjQgLyogQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlF
RUFGMjIyODEyNDRDMDA4NDc0RjQgLyogQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmggKi87IH07CiAJCUUzOUZFQkUzMjMzOUM1RDkwMEI0MEFCMCAvKiBK
U0FzeW5jR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzlGRUJFMjIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVyYXRvci5oICov
OyB9OwpAQCAtNTA4Nyw2ICs1MDkyLDEyIEBACiAJCUUzMjgyQkI5MUZFOTMwQTMwMEVEQUY3MSAv
KiBZYXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFlhcnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJF
cnJvckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVycm9yQ29k
ZS5oOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFMDI2REFG
RDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFMjI2
REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyRDRERTMyNkRBRkQ0MzAwRDQ1MzNB
IC8qIFRlbXBvcmFsQ2FsZW5kYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxDYWxlbmRhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERF
NDI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFNTI2REFGRDQzMDBENDUzM0Eg
LyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA1RkIwMjBCMEY3ODcwMENFQjgyQiAvKiBJbkJ5VmFy
aWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5VmFyaWFu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA1RkIxMjBCMEY3ODgwMENF
QjgyQiAvKiBJbkJ5VmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bkJ5VmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzMwOTVEQzIzMjEw
QTE0MDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MjAyLDYgKzUyMTMsOCBAQAogCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogQWNj
ZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzQ2FzZVNuaXBwZXRQ
YXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMjk1REMxRUQyQ0JBQTAw
RDMwMTZGIC8qIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzQ2MzA1MjZEQjVE
RTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzY5NEIxMjMwMjY4NzMw
MDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PU1JFbnRy
eURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDNjk0QjIyMzAyNjg3NDAw
NkZCRTQyIC8qIFdhc21UaWVyVXBDb3VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtVGll
clVwQ291bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0M3M0E4RjI1QkZB
NzM0MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2FzbVN0cmVhbWluZ1BsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzAwOSw2ICs3MDIyLDggQEAKIAkJCQk5OTZCNzMxMTFCRDlGQTJDMDAz
MzFCODQgLyogU3RyaW5nQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTMxQkQ5RkEy
QzAwMzMxQjg0IC8qIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCTk5NkI3MzE0MUJE
OUZBMkMwMDMzMUI4NCAvKiBTeW1ib2xQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRTNDNDYzMDUy
NkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
KwkJCQlFM0M0NjMwNjI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZS5sdXQuaCAqLywKIAkJCQlGNkYxNTAyMDI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmpl
Y3QubHV0LmggKi8sCiAJCQkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAq
LywKIAkJCQlBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTc5NTMsNiArNzk2OCwxMiBAQAogCQkJCUUzMTE3
OUE5MjI4ODM4NUQwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oICovLAogCQkJ
CUJEQjRCNUUwOTlDRDRDMUJCM0MxQ0YwNSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3Bw
ICovLAogCQkJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IuaCAqLywKKwkJCQlFMzJENERFMDI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxl
bmRhci5jcHAgKi8sCisJCQkJRTMyRDRERTMyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2Fs
ZW5kYXIuaCAqLywKKwkJCQlFMzJENERFNTI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzJENERFNDI2REFGRDQzMDBENDUzM0EgLyog
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRTMyRDRERTIyNkRBRkQ0MjAw
RDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwICovLAorCQkJCUUzMkQ0REUx
MjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmggKi8sCiAJCQkJ
RjZGMTUwMUIyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmNwcCAqLywKIAkJCQlGNkYx
NTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuaCAqLywKIAkJCQlGNkYxNTAxOTI2
OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICovLApAQCAtMTA2NDksNiArMTA2
NzAsMTEgQEAKIAkJCQlBNzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJREM3OTk3ODMxQ0RFOUZBMDAwNEQ0QTA5IC8qIFRhZ1JlZ2lz
dGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REU5
MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzJENERFQTI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlEQTFEQjI2REI1RTUxMDAxMDA0MzcgLyogVGVtcG9y
YWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRDRERTcy
NkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzOURBMURBMjZEQjVFNEMwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVG
IC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VF
Mjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
NEE3QjQyMEJGNjhEOTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA1MmI5M2VlOGQ4YmJhNjYwNjRk
YjIwMThmM2YzMTc3MDJmNzZhYTljLi4xZTNhZWY0NTUzZDk0YWJkNmFmNmQzZDI1ZGY0MTM5YjMw
NGQ0NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDA5LDYgKzEwMDksOSBA
QCBydW50aW1lL1N5bWJvbE9iamVjdC5jcHAKIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAog
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKIHJ1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmNwcAorcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcAorcnVudGltZS9UZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3Bw
CiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKIHJ1
bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcAppbmRleCA3ZjE2M2M2MGZkMDhiM2U0ZjhjNTZjNDBlZWFmZWUwZDkx
YzIxOTE1Li4yZjc1ZDA0N2ZhY2UzZWZhM2E3M2E5ZjQ3YzgyODEzNjUxYWE2YjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTU3NCw0OSAr
MTU3NCw3MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE9iamVjdEZ1bmNHZXRDYW5v
bmljYWxMb2NhbGVzLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobG9jYWxlQXJyYXkpOwogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50
bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJsZWNhbGVuZGFycwotc3RhdGljIEpTQXJyYXkqIGF2
YWlsYWJsZUNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorY29uc3QgVmVj
dG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMoKQogewotICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gYXZhaWxh
YmxlQ2FsZW5kYXJzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsK
KyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgYXZhaWxh
YmxlQ2FsZW5kYXJzLmNvbnN0cnVjdCgpOworICAgICAgICBBU1NFUlQoYXZhaWxhYmxlQ2FsZW5k
YXJzLT5pc0VtcHR5KCkpOwogCi0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
Ci0gICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxVRW51bWVyYXRpb24sIElD
VURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX2dldEtleXdvcmRWYWx1ZXNGb3JMb2NhbGUoImNh
bGVuZGFycyIsICJ1bmQiLCBmYWxzZSwgJnN0YXR1cykpOwotICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJzIl9zKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9CisgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwg
SUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZhbHVlc0ZvckxvY2FsZSgi
Y2FsZW5kYXJzIiwgInVuZCIsIGZhbHNlLCAmc3RhdHVzKSk7CisgICAgICAgIEFTU0VSVChVX1NV
Q0NFU1Moc3RhdHVzKSk7CiAKLSAgICBpbnQzMl90IGNvdW50ID0gdWVudW1fY291bnQoZW51bWVy
YXRpb24uZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1l
cmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJzIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9
CisgICAgICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3VudChlbnVtZXJhdGlvbi5nZXQoKSwg
JnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgIGF2
YWlsYWJsZUNhbGVuZGFycy0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAKLSAgICBW
ZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKLSAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNvdW50KTsKLSAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7Ci0gICAgICAgIGludDMyX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgY29uc3Qg
Y2hhciogcG9pbnRlciA9IHVlbnVtX25leHQoZW51bWVyYXRpb24uZ2V0KCksICZsZW5ndGgsICZz
dGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2
YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
YXV0byBjcmVhdGVJbW1vcnRhbFRocmVhZFNhZmVTdHJpbmcgPSBbJl0oU3RyaW5nJiYgc3RyaW5n
KSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNy
ZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOworICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51bV9uZXh0KGVudW1lcmF0aW9uLmdl
dCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3Rh
dHVzKSk7CisgICAgICAgICAgICBTdHJpbmcgY2FsZW5kYXIocG9pbnRlciwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvIG1hcHBlZCA9IG1hcElDVUNhbGVuZGFyS2V5d29yZFRvQkNQNDco
Y2FsZW5kYXIpKQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZUNhbGVuZGFycy0+YXBwZW5kKGNy
ZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhXVEZNb3ZlKG1hcHBlZC52YWx1ZSgpKSkpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZUNhbGVuZGFycy0+YXBw
ZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhXVEZNb3ZlKGNhbGVuZGFyKSkpOwog
ICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBjYWxlbmRhcihwb2ludGVyLCBsZW5ndGgpOwotICAg
ICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRhcktleXdvcmRUb0JDUDQ3KGNhbGVu
ZGFyKSkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKG1hcHBlZC52YWx1ZSgp
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKGNh
bGVuZGFyKSk7Ci0gICAgfQogCi0gICAgLy8gVGhlIEF2YWlsYWJsZUNhbGVuZGFycyBhYnN0cmFj
dCBvcGVyYXRpb24gcmV0dXJucyBhIExpc3QsIG9yZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhl
IHNhbWUKLSAgICAvLyB2YWx1ZXMgaGFkIGJlZW4gc29ydGVkIHVzaW5nICVBcnJheS5wcm90b3R5
cGUuc29ydCUgdXNpbmcgdW5kZWZpbmVkIGFzIGNvbXBhcmVmbgotICAgIHN0ZDo6c29ydChlbGVt
ZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwKLSAgICAgICAgW10oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENv
bXBhcmUoYSwgYikgPCAwOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gVGhlIEF2YWlsYWJsZUNh
bGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBhIExpc3QsIG9yZGVyZWQgYXMgaWYg
YW4gQXJyYXkgb2YgdGhlIHNhbWUKKyAgICAgICAgLy8gdmFsdWVzIGhhZCBiZWVuIHNvcnRlZCB1
c2luZyAlQXJyYXkucHJvdG90eXBlLnNvcnQlIHVzaW5nIHVuZGVmaW5lZCBhcyBjb21wYXJlZm4K
KyAgICAgICAgc3RkOjpzb3J0KGF2YWlsYWJsZUNhbGVuZGFycy0+YmVnaW4oKSwgYXZhaWxhYmxl
Q2FsZW5kYXJzLT5lbmQoKSwKKyAgICAgICAgICAgIFtdKGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBvaW50Q29tcGFy
ZShhLCBiKSA8IDA7CisgICAgICAgICAgICB9KTsKKyAgICB9KTsKKyAgICByZXR1cm4gYXZhaWxh
YmxlQ2FsZW5kYXJzOworfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVB
cnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwor
Q2FsZW5kYXJJRCBpc284NjAxQ2FsZW5kYXJJRCgpCit7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxDYWxlbmRhcklEPiBpZGVudGlmaWVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZd
IHsKKyAgICAgICAgY29uc3QgYXV0byYgY2FsZW5kYXJzID0gaW50bEF2YWlsYWJsZUNhbGVuZGFy
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjYWxlbmRhcnMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXJzW2luZGV4XSA9PSAi
aXNvODYwMSJfcykgeworICAgICAgICAgICAgICAgIGlkZW50aWZpZXIuY29uc3RydWN0KGluZGV4
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
aWRlbnRpZmllci5nZXQoKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
ZW51bWVyYXRpb24vI3NlYy1hdmFpbGFibGVjYWxlbmRhcnMKK3N0YXRpYyBKU0FycmF5KiBhdmFp
bGFibGVDYWxlbmRhcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgaW50bEF2YWlsYWJs
ZUNhbGVuZGFycygpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZW51
bWVyYXRpb24vI3NlYy1hdmFpbGFibGVjb2xsYXRpb25zCkBAIC0xODY0LDIxICsxODg1LDQgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxPYmplY3RGdW5jU3VwcG9ydGVkVmFsdWVzT2Ys
IChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICByZXR1cm4geyB9OwogfQogCi1KU0FycmF5KiBj
cmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VmVjdG9yPFN0cmluZywgMT4mJiBlbGVtZW50cykKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0g
ICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhD
b250aWd1b3VzKSwgZWxlbWVudHMuc2l6ZSgpKTsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBlbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4LCBqc1N0cmluZyh2bSwgV1RGTW92ZShlbGVtZW50c1tp
bmRleF0pKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAg
fQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGRjNjk2ZDY1ZmE1YzYzNjMy
MmE2YzUxNGY4YjAwNzg0ZGVmMmZjNmIuLmQwZWE0ZWZmMzcwNDliNDdhYzI0MWQ2OTIxZTM3MDRl
ZjNlYzFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgK
QEAgLTEwMSw2ICsxMDEsMTAgQEAgaW5saW5lIGNvbnN0IExvY2FsZVNldCYgaW50bFBsdXJhbFJ1
bGVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGUKIGlubGluZSBjb25z
dCBMb2NhbGVTZXQmIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyBy
ZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsZVNldCYg
aW50bExpc3RGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxv
Y2FsZXMoKTsgfQogCit1c2luZyBDYWxlbmRhcklEID0gdW5zaWduZWQ7Citjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW50bEF2YWlsYWJsZUNhbGVuZGFycygpOworQ2FsZW5kYXJJRCBpc284NjAxQ2Fs
ZW5kYXJJRCgpOworCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUpOwogU3RyaW5nIGludGxTdHJpbmdPcHRp
b24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91
bmQsIGNvbnN0IGNoYXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBt
aW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7CkBAIC0xNDgsNiAr
MTUyLDQgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hcElDVUNvbGxhdGlvbktleXdvcmRUb0JD
UDQ3KGNvbnN0IFN0cmluZyYpOwogc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hcElDVUNhbGVuZGFy
S2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5nJik7CiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFw
QkNQNDdUb0lDVUNhbGVuZGFyS2V5d29yZChjb25zdCBTdHJpbmcmKTsKIAotSlNBcnJheSogY3Jl
YXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgVmVjdG9yPFN0cmluZywg
MT4mJik7Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggZDhiMGFiYTYyNzI0ZWI1NWZiZTVh
ZmQ3NjU3ZTRjYTU1MmExYjRiYi4uZDQxMDI0OTUzMGUwNGJlMGZlNDgyNjZiZjRiZGE3NDc1YTAw
ZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
SW5saW5lcy5oCkBAIC0yMjUsNCArMjI1LDIyIEBAIGlubGluZSBKU09iamVjdCogaW50bENvZXJj
ZU9wdGlvbnNUb09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAg
ICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4KK0pT
QXJyYXkqIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBDb250YWluZXImIGVsZW1lbnRzKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aENvbnRpZ3VvdXMpLCBlbGVtZW50cy5zaXplKCkpOworICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIGpzU3RyaW5nKHZtLCBlbGVtZW50c1tpbmRl
eF0pKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTVmNWIwNjRl
Y2JmYzY1OGE5OTBkMmViNTk2MzViZjJiZGJlODg4Mi4uZDQ1NjdlZmU5MDI2YzlhNjQ3NWVkNDVh
YmVhMmFlYzZjNzQ4NjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjAxLDYgKzIwMSw5IEBACiAjaW5jbHVkZSAiU3ltYm9s
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1i
b2xQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVk1U
cmFwc0lubGluZXMuaCIKICNpbmNsdWRlICJXYXNtQ2FwYWJpbGl0aWVzLmgiCkBAIC0xMjEyLDYg
KzEyMTUsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwgaW50bCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgaWYgKE9wdGlv
bnM6OnVzZVRlbXBvcmFsKCkpIHsKKyAgICAgICAgbV9jYWxlbmRhclN0cnVjdHVyZS5pbml0TGF0
ZXIoCisgICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkg
eworICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlKiBjYWxlbmRhclByb3RvdHlwZSA9IFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3Jh
bENhbGVuZGFyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjYWxlbmRh
clByb3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisKICAgICAgICAgVGVtcG9yYWxPYmplY3Qq
IHRlbXBvcmFsID0gVGVtcG9yYWxPYmplY3Q6OmNyZWF0ZSh2bSwgVGVtcG9yYWxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+VGVtcG9yYWwsIHRlbXBvcmFsLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgfQpAQCAtMjA5
MCw2ICsyMTAwLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlND
ZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJG
b3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKKyAgICB0aGlzT2JqZWN0LT5tX2NhbGVu
ZGFyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fbnVsbFNldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX251bGxTZXR0ZXJTdHJpY3RGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxNzViOGI2YjkxNDM2YjY5M2ZmZDMxZGZi
YzY3ODdhNDE1NDZkODlmLi4xMjQ2NThmMjQ1MmUwYzVhZDBmZGVlYjE0ZTkwYmU2Mzg5OGRiMzI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTMyNCw2ICszMjQsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9kYXRlVGltZUZv
cm1hdFN0cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9udW1iZXJGb3JtYXRTdHJ1
Y3R1cmU7CiAKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9j
YWxlbmRhclN0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVuY3Rpb24+
IG1fbnVsbEdldHRlckZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxOdWxsU2V0dGVyRnVuY3Rp
b24+IG1fbnVsbFNldHRlckZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxOdWxsU2V0dGVyRnVu
Y3Rpb24+IG1fbnVsbFNldHRlclN0cmljdEZ1bmN0aW9uOwpAQCAtODcwLDYgKzg3Miw4IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIEpTT2JqZWN0KiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbnVtYmVy
Rm9ybWF0U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAgICAgSlNPYmplY3QqIG51bWJl
ckZvcm1hdFByb3RvdHlwZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnByb3Rv
dHlwZSh0aGlzKTsgfQogCisgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmNlMzVlYTYzMmE1YTU5MDdhZTQxOTA3MDc0NGJhMTRkYjcxOTFiYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBUZW1wb3JhbENhbGVuZGFyOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsQ2Fs
ZW5kYXIpIH07CisKK25hbWVzcGFjZSBUZW1wb3JhbENhbGVuZGFySW50ZXJuYWwgeworc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKworVGVtcG9yYWxDYWxlbmRhciog
VGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENh
bGVuZGFySUQgaWRlbnRpZmllcikKK3sKKyAgICBUZW1wb3JhbENhbGVuZGFyKiBmb3JtYXQgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyPih2bS5oZWFwKSkgVGVt
cG9yYWxDYWxlbmRhcih2bSwgc3RydWN0dXJlLCBpZGVudGlmaWVyKTsKKyAgICBmb3JtYXQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIFRl
bXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxDYWxlbmRhcjo6VGVtcG9y
YWxDYWxlbmRhcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDYWxlbmRhcklEIGlkZW50
aWZpZXIpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKK3sKK30KKworc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBUZW1wb3JhbENhbGVu
ZGFyOjppc0J1aWx0aW5DYWxlbmRhcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBjb25zdCBh
dXRvJiBjYWxlbmRhcnMgPSBpbnRsQXZhaWxhYmxlQ2FsZW5kYXJzKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgY2FsZW5kYXJzLnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICBpZiAoY2FsZW5kYXJzW2luZGV4XSA9PSBzdHJpbmcpCisgICAgICAgICAgICByZXR1cm4g
aW5kZXg7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWxjYWxl
bmRhcnN0cmluZworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gcGFyc2VUZW1wb3Jh
bENhbGVuZGFyU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBwYXJzaW5nIHRlbXBvcmFsIGNhbGVuZGFyIHN0
cmluZywgd2hpY2ggcmVxdWlyZXMgZnVsbCBJU08gODYwMSBwYXJzZXIuCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQg
Y2FsZW5kYXIgSUQiX3MpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxjYWxl
bmRhcgorSlNPYmplY3QqIFRlbXBvcmFsQ2FsZW5kYXI6OmZyb20oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBjYWxlbmRhckxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmIChjYWxlbmRhckxpa2UuaXNPYmplY3QoKSkgeworICAgICAgICBKU09iamVjdCog
Y2FsZW5kYXJMaWtlT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsZW5kYXJMaWtlKTsKKwor
ICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBpbXBsZW1lbnQgY29kZSByZXRyaWV2aW5nIENh
bGVuZGFyIGZyb20gVGVtcG9yYWwgRGF0ZSBMaWtlIG9iamVjdHMuIEJ1dAorICAgICAgICAvLyBj
dXJyZW50bHkgdGhleSBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KKworICAgICAgICBib29sIGhh
c1Byb3BlcnR5ID0gY2FsZW5kYXJMaWtlT2JqZWN0LT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKKyAgICAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNPYmplY3QqPihjYWxlbmRhckxpa2UpOworCisgICAgICAgIGNhbGVuZGFy
TGlrZSA9IGNhbGVuZGFyTGlrZU9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+Y2FsZW5kYXIpOworICAgICAgICBpZiAoY2FsZW5kYXJMaWtlLmlzT2JqZWN0KCkpIHsK
KyAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxlbmRh
ckxpa2UpLT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGVu
ZGFyKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQorICAgICAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihjYWxlbmRhckxpa2UpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBp
ZGVudGlmaWVyID0gY2FsZW5kYXJMaWtlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Q2Fs
ZW5kYXJJRD4gY2FsZW5kYXJJZCA9IGlzQnVpbHRpbkNhbGVuZGFyKGlkZW50aWZpZXIpOworICAg
IGlmICghY2FsZW5kYXJJZCkgeworICAgICAgICBjYWxlbmRhcklkID0gcGFyc2VUZW1wb3JhbENh
bGVuZGFyU3RyaW5nKGdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGNhbGVuZGFySWQp
OworICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
Y2FsZW5kYXJTdHJ1Y3R1cmUoKSwgY2FsZW5kYXJJZC52YWx1ZSgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEwNTdlNmMzYWM4MDdjM2ZiOTQ3ZmMwN2MwMzVkZWU3ZmQ5
YjJiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsQ2FsZW5kYXIgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2bS50ZW1wb3JhbENhbGVuZGFyU3BhY2U8bW9kZT4oKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgVGVtcG9yYWxDYWxlbmRhciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
Q2FsZW5kYXJJRCk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIENh
bGVuZGFySUQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gaXNCdWlsdGluQ2FsZW5kYXIoU3Ry
aW5nVmlldyk7CisKKyAgICBzdGF0aWMgSlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbENhbGVuZGFyKFZNJiwgU3RydWN0dXJl
KiwgQ2FsZW5kYXJJRCk7CisKKyAgICBDYWxlbmRhcklEIG1faWRlbnRpZmllciB7IDAgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmgiCisKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yRnVuY0Zyb20pOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZ0ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3JUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5o
CitAYmVnaW4gdGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yVGFibGUKKyAgICBmcm9tICAgICAg
ICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ciogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZSkKK3sKKyAgICBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJu
YWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhcik7CisKK1Rl
bXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbENhbGVuZGFyLCBjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFy
KQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3Ms
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxD
YWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9
IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgY2FsZW5kYXJTdHJ1Y3R1cmUsIG5l
d1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgYXV0byBjYWxlbmRhclN0cmluZyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBpZGVudGlm
aWVyID0gVGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIoY2FsZW5kYXJTdHJpbmcp
OworICAgIGlmICghaWRlbnRpZmllcikgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxlbmRh
cjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxlbmRhciIpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvckZ1
bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxlbmRhcjo6ZnJv
bShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOTc3NTBhZDliZTc3
NGNhNDAxOTE2OWU1ZDE5NTE0YTg1NWQ2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IgZmluYWwgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVy
bmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAg
IHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNGNjNzI1
ZjIwN2MwMDc4ODFmYTU0Nzk1N2QxN2ViYmU3ODkyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFt
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVu
Y1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGVGdW5jVG9KU09OKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVHZXR0ZXJJZCk7CisKK30KKworI2luY2x1ZGUg
IlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVt
cG9yYWwuQ2FsZW5kYXIiLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQu
aAorQGJlZ2luIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVUYWJsZQorICAgIHRvU3RyaW5nICAg
ICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICBEb250RW51bXxG
dW5jdGlvbiAwCisgICAgdG9KU09OICAgICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVG
dW5jVG9KU09OICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgICBpZCAgICAgICAgICAgICAg
dGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUdldHRlcklkICAgICAgICAgUmVhZE9ubHl8RG9udEVu
dW18Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUq
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6
OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtZ2V0LXRlbXBvcmFsLmNh
bGVuZGFyLnByb3RvdHlwZS5pZAorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGVHZXR0ZXJJZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLnRvU3RyaW5nKGdsb2JhbE9i
amVjdCkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10
ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxDYWxl
bmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNhbGVuZGFyKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENhbGVuZGFyIl9zKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGludGxBdmFpbGFibGVDYWxlbmRhcnMoKVtj
YWxlbmRhci0+aWRlbnRpZmllcigpXSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUudG9qc29uCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb0pTT04s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYzVmODQ4MGQ4YzM0ZjIwMWM0N2NiOGVhMWJlNDJmNjRkZDZlN2Zl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAK
aW5kZXggYWYxNDM2NzVmMWU0YzYyODdlYTJiZTE4ZjQzM2VlYmUzNzJhNzE3ZC4uOGY0ODIyYjc2
NDRjNGE4NDFhZDA2M2Y2MDZmMGYzM2M3ODJjMzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDE2ICsyMSwyNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJPYmpl
Y3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxOb3cuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShUZW1wb3JhbE9iamVjdCk7CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNh
bGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBv
cmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVj
dCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5n
bG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganND
YXN0PFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3Ry
dWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
IGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9y
YWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0
KTsKQEAgLTQ1LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8qIFNvdXJjZSBmb3IgVGVt
cG9yYWxPYmplY3QubHV0LmgKIEBiZWdpbiB0ZW1wb3JhbE9iamVjdFRhYmxlCisgIENhbGVuZGFy
ICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlD
YWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVOb3dPYmplY3QgICAgICAgICAgICAgICAg
IERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggMWRlYTZhMTNjYjRjNDI5YjliMDcxOThiYWI2YzQ0ZjMxNDY5ZDA2
OC4uMzA5M2UxMTU1YjZkZmRjYWY1N2YwZDUwZGRjNzgyZmJkMTVjOWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTYyLDYgKzE2Miw3IEBACiAjaW5jbHVkZSAiU3Ry
dWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3ltYm9sT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUg
IlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTU4NCw2ICsxNTg1LDcgQEAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWwKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3QpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxlbmRhcikKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWlu
dDE2QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiY2VkOTg0M2ZjZTgy
NjIwZTg4Yjk3NTAxODNhZWI2MTU1NjI2MDY5Li5hYTc1NTk3ZWQ4YzUxMmU5ZWNiZWY3NGU0NjA2
NmYyNjJlZDEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE5Myw2ICsx
OTMsNyBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVu
dHJ5U2NvcGU7CitjbGFzcyBUZW1wb3JhbENhbGVuZGFyOwogY2xhc3MgVG9wTGV2ZWxHbG9iYWxP
YmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsKIGNsYXNzIFR5cGVQcm9maWxlckxvZzsK
QEAgLTU5MSw2ICs1OTIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJy
YXlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFy
cmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA3NGY1Njk4ODJlNmQ0
Njk0OTgzZjcxOTBhMTc3MDIxNmRhMjZjYzg3Li5kNTg0NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4
MjEyZDM5YWZlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTI4NCwxMiAr
Mjg0LDIyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNy
ZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwo
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBjb25zdCBM
Q2hhciogbGNoYXJDaGFyYWN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNo
YXJhY3RlcnMpOwotICAgIEFTU0VSVChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobGNoYXJDaGFyYWN0
ZXJzLCBsZW5ndGgpKTsKLSAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJu
YWwobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAgIHJlc3VsdC0+c2V0SGFzaChTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGxjaGFyQ2hhcmFjdGVycywgbGVuZ3Ro
KSk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiAqZW1wdHkoKTsKKyAgICBSZWY8
U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsK
KyAgICByZXN1bHQtPmhhc2goKTsKKyAgICByZXN1bHQtPm1fcmVmQ291bnQgfD0gc19yZWZDb3Vu
dEZsYWdJc1N0YXRpY1N0cmluZzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gKmVtcHR5KCk7CisgICAgUmVmPFN0cmluZ0ltcGw+IHJlc3VsdCA9IGNyZWF0ZThCaXRJ
ZlBvc3NpYmxlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgcmVzdWx0LT5oYXNoKCk7CiAgICAg
cmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggNDhlZTg5ZGRh
MWZmYTI3ZjM5Zjk0Y2ZjNmRkNzkzNDY1ZGI0Y2Q4Yy4uNDc0NTU2MzNmOThhYmEyZjc2NWRjZTVi
YjYwMjFhOGFmMWM4ZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI1OSw3ICsy
NTksMTMgQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomKTsKIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwo
Y29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYml0
d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChiaXR3aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihj
aGFyYWN0ZXJzKSwgbGVuZ3RoKTsKKyAgICB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBMQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJp
bmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIg
b3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9p
bnRlciBvZiByZWFsbG9jKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436735</attachid>
            <date>2021-08-29 03:41:15 -0700</date>
            <delta_ts>2021-08-29 22:42:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229651-20210829034114.patch</filename>
            <type>text/plain</type>
            <size>72095</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzczYmNmZGE5NGMwYjMzODhmYmQ3ZTI2YWNhZDg0MzMyYjdmNTIxLi40ZmNkMmJjN2JhNDI4NTk0
MzE2YjJjYmZlMDRlNWFiNTUzZjNjZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAyMS0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6aW50bEF2YWlsYWJsZUNhbGVuZGFycyk6CisgICAgICAgIChKU0M6Omlzbzg2MDFDYWxlbmRh
cklEU2xvdyk6CisgICAgICAgIChKU0M6OmF2YWlsYWJsZUNhbGVuZGFycyk6CisgICAgICAgIChK
U0M6OmNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Omlzbzg2MDFDYWxlbmRhcklEKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNyZWF0
ZUFycmF5RnJvbVN0cmluZ1ZlY3Rvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxlbmRh
clN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsQ2FsZW5kYXI6OlRlbXBvcmFsQ2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bENhbGVuZGFyOjppc0J1aWx0aW5DYWxlbmRhcik6CisgICAgICAgIChKU0M6OnBhcnNlVGVtcG9y
YWxDYWxlbmRhclN0cmluZyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXI6OmZyb20p
OgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6VGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6ZGVm
YXVsdE1lcmdlRmllbGRzKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wOC0yNyAgU3RlcGhh
biBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9u
XVtDTWFrZV0gQWRkIGNvbnRyb2wgb3ZlciB3aGV0aGVyIEphdmFTY3JpcHRDb3JlIHNob3VsZCBi
ZSBzaGFyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggY2M0MGYyNjE2NTg2MTQ4MzgwNDczMmQ4OTExODNkOGM1OGNmODkyOC4u
OGY2Y2E5ZDQ0YTU0NWI0MmM2NWRkODlkNDA5YmY2YTEzYWVkYzEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbCk6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKToKKwogMjAyMS0wOC0yOCAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtXVEZdIEZpeCBzdGF0aWMgYW5hbHl6ZXIg
d2FybmluZ3MgYWJvdXQgbnVsbHB0ciBkZXJlZnMgaW4gU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoKSBhbmQgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNGUwZWFmZjFiNjIzOTcxYjFiYzkzODA5OGZhYjViYmY4OGEwZTg5
NS4uNTkzMDZlNWQzOGVlNjA4OWYyYjUzMDVkNTBiMGRmOTRjMTdmZThkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA3LDYgKzEwNyw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAor
ICAgIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcAogCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBkNzFhODBkNjdmZDgzNGUwZGEzZGI5YWViM2RjMDc5MGM4NzM4ZmFjLi4xMjAyNWVh
MDM5YWFiNjc1NzJjMjJkMzdlMzgyYzMyNDhjZDhiNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTY5LDYg
KzE2OSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCiAk
KFBST0pFQ1RfRElSKS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1N5
bWJvbFByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAK
ICQoUFJPSkVDVF9ESVIpL3VjZC9DYXNlRm9sZGluZy50eHQKICQoUFJPSkVDVF9ESVIpL3VjZC9E
ZXJpdmVkQmluYXJ5UHJvcGVydGllcy50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA5Y2ZmZTlhZGJkYWI1
NGNmNzc1M2JkOTdjMjVkODFkYmM3MDUxODIwLi4wMTZkYThmODVjOTk5OGZjOWQxM2E3MzIyMThh
ODQxMzllMmMyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02Niw2ICs2Niw4IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1N0cmluZ1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1N5bWJvbENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvU3ltYm9sUHJvdG90eXBl
Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVW5pY29kZVBhdHRlcm5UYWJsZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1dhc21CM0lSR2VuZXJhdG9y
SW5saW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDc1NDJjN2Y3NzQ2NWUyNmUxOWQ0YTY4YTVkYjc2MDkxZmRkNDY1MzkuLmM4MmNmMjYxYmFhMDMz
OWNlYzJkNDkzZTRlZGRhMjdjMDUwN2MwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xOTEsNiArMTkxLDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0g
XAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0
LmggXAogICAgIFN5bWJvbFByb3RvdHlwZS5sdXQuaCBcCisgICAgVGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwK
ICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
bHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjAxOTZlMmM2NzAyM2M4
MTBkNjJmMjUwOTY4M2I4MTNmMWZmMDY4Li4yM2NiYjI5OGNlYjY0Yjc4YzYwMTgxYzJlNGZlZGI5
ZjM5ODcxYWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0Nyw2ICsxODQ3
LDkgQEAKIAkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNBIC8q
IE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1ibGVy
SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzMkMzQzY5MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyQzND
NjgyM0U5NEMxRTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi87IH07
CisJCUUzMkQ0REU3MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJENERF
MTI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovOyB9Owor
CQlFMzJENERFOTI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTMyNkRBRkQ0MzAw
RDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXIuaCAqLzsgfTsKKwkJRTMyRDRERUEyNkRBRkQ0MzAw
RDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTQyNkRBRkQ0MzAwRDQ1MzNBIC8q
IFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzMwOTVERDIzMjEwQTFC
MDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDk1REMyMzIxMEExNDAwRUI3ODU2IC8q
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM0Q0JCNTIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhw
R2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMzNENCQjMyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNjFCNjMy
MjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTkwMiw2ICsxOTA1LDggQEAKIAkJRTM5QkYzOTkyMkEyMjg4QjAwQkQxODNFIC8qIFN5bWJv
bFRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5QkYzOTgyMkEyMjg4QjAwQkQxODNFIC8qIFN5bWJvbFRhYmxlSW5saW5lcy5oICov
OyB9OwogCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFE
MzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5RDhCMkUyMzAyMUUyNjAwMjY1ODUy
IC8qIFdhc21PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzlEOEIyRDIzMDIxRTFFMDAyNjU4NTIgLyogV2FzbU9wZXJhdGlvbnMuaCAq
LzsgfTsKKwkJRTM5REExREEyNkRCNUU0QzAwMTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0M0NjMwNjI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5s
dXQuaCAqLzsgfTsKKwkJRTM5REExREIyNkRCNUU1MTAwMTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQzQ2MzA1MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IubHV0LmggKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5RUVBRjMyMjgxMjQ1
MDAwODQ3NEY0IC8qIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
RUVBRjIyMjgxMjQ0QzAwODQ3NEY0IC8qIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oICovOyB9OwogCQlFMzlGRUJFMzIzMzlDNUQ5MDBCNDBBQjAgLyog
SlNBc3luY0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAq
LzsgfTsKQEAgLTUwODcsNiArNTA5MiwxMiBAQAogCQlFMzI4MkJCOTFGRTkzMEEzMDBFREFGNzEg
LyogWWFyckVycm9yQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBZYXJyRXJyb3JDb2RlLmNwcDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJy
RXJyb3JDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJFcnJvckNv
ZGUuaDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzJDM0M2ODIzRTk0QzFFMDBCQzk3QzAgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyRDRERTAyNkRB
RkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzMkQ0REUxMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyRDRERTIy
NkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUzMjZEQUZENDMwMEQ0NTMz
QSAvKiBUZW1wb3JhbENhbGVuZGFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFsQ2FsZW5kYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyRDRE
RTQyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyRDRERTUyNkRBRkQ0MzAwRDQ1MzNB
IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeVZh
cmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeVZhcmlh
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzMwNUZCMTIwQjBGNzg4MDBD
RUI4MkIgLyogSW5CeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5CeVZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDk1REMyMzIx
MEExNDAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTIwMiw2ICs1MjEzLDggQEAKIAkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8qIEFj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIEFjY2Vzc0Nhc2VTbmlwcGV0UGFy
YW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc0Nhc2VTbmlwcGV0
UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzI5NURDMUVEMkNCQUEw
MEQzMDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M0NjMwNTI2REI1
REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0M2OTRCMTIzMDI2ODcz
MDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT1NSRW50
cnlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzY5NEIyMjMwMjY4NzQw
MDZGQkU0MiAvKiBXYXNtVGllclVwQ291bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVRp
ZXJVcENvdW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDNzNBOEYyNUJG
QTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21TdHJlYW1pbmdQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcwMDksNiArNzAyMiw4IEBACiAJCQkJOTk2QjczMTExQkQ5RkEyQzAw
MzMxQjg0IC8qIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCTk5NkI3MzEzMUJEOUZB
MkMwMDMzMUI4NCAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQk5OTZCNzMxNDFC
RDlGQTJDMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUUzQzQ2MzA1
MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggKi8s
CisJCQkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUubHV0LmggKi8sCiAJCQkJRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2Jq
ZWN0Lmx1dC5oICovLAogCQkJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmgg
Ki8sCiAJCQkJQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3IubHV0LmggKi8sCkBAIC03OTUzLDYgKzc5NjgsMTIgQEAKIAkJCQlFMzEx
NzlBOTIyODgzODVEMDA1MTRCMkMgLyogU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCAqLywKIAkJ
CQlCREI0QjVFMDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNw
cCAqLywKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi8sCisJCQkJRTMyRDRERTAyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2Fs
ZW5kYXIuY3BwICovLAorCQkJCUUzMkQ0REUzMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENh
bGVuZGFyLmggKi8sCisJCQkJRTMyRDRERTUyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2Fs
ZW5kYXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTMyRDRERTQyNkRBRkQ0MzAwRDQ1MzNBIC8q
IFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMkQ0REUyMjZEQUZENDIw
MEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzJENERF
MTI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovLAogCQkJ
CUY2RjE1MDFCMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5jcHAgKi8sCiAJCQkJRjZG
MTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8sCiAJCQkJRjZGMTUwMTky
NjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmNwcCAqLywKQEAgLTEwNjQ5LDYgKzEw
NjcwLDExIEBACiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCURDNzk5NzgzMUNERTlGQTAwMDRENEEwOSAvKiBUYWdSZWdp
c3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzJENERF
OTI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMyRDRERUEyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5REExREIyNkRCNUU1MTAwMTAwNDM3IC8qIFRlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REU3
MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzlEQTFEQTI2REI1RTRDMDAxMDA0MzcgLyogVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2RjE1MDIxMjY5M0Q0NTAwMDRCOThF
RiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDRBN0I0MjBCRjY4RDkwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNTJiOTNlZThkOGJiYTY2MDY0
ZGIyMDE4ZjNmMzE3NzAyZjc2YWE5Yy4uMWUzYWVmNDU1M2Q5NGFiZDZhZjZkM2QyNWRmNDEzOWIz
MDRkNDVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAwOSw2ICsxMDA5LDkg
QEAgcnVudGltZS9TeW1ib2xPYmplY3QuY3BwCiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiBydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
ci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiBy
dW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDMzZTJjN2UxMmJjM2Q4N2IzYjU4Zjhh
ZWU5MjUyNzY5ZjhiNjk1OWMuLjE0MWQ1YzQwYjdhNTBlMjVjZTRmNWQwZjI2YmI2YmI2NDI4NGQ1
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMTEwLDYgKzExMCw3IEBACiAgICAgbWFjcm8oZG90QWxsKSBcCiAgICAgbWFj
cm8oZW51bWVyYWJsZSkgXAogICAgIG1hY3JvKGVyYSkgXAorICAgIG1hY3JvKGVyYVllYXIpIFwK
ICAgICBtYWNybyhlcnJvcnMpIFwKICAgICBtYWNybyhldmFsKSBcCiAgICAgbWFjcm8oZXZlbnRz
KSBcCkBAIC0xNjksNiArMTcwLDcgQEAKICAgICBtYWNybyhtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpIFwKICAgICBtYWNybyhtaW51dGUpIFwKICAgICBtYWNybyhtb250aCkgXAorICAgIG1hY3Jv
KG1vbnRoQ29kZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXAogICAgIG1hY3JvKG5hbWUpIFwK
ICAgICBtYWNybyhuZXh0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCmluZGV4IDdmMTYzYzYwZmQwOGIzZTRmOGM1NmM0MGVlYWZlZTBkOTFjMjE5MTUu
LmMxMmIzM2JmZDIxNTEyMDZhODU3ZTQ3YzEwODc4N2IzNjY0MTVhZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNTc0LDQ5ICsxNTc0LDcw
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExv
Y2FsZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShs
b2NhbGVBcnJheSk7CiB9CiAKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWVudW1l
cmF0aW9uLyNzZWMtYXZhaWxhYmxlY2FsZW5kYXJzCi1zdGF0aWMgSlNBcnJheSogYXZhaWxhYmxl
Q2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaW50bEF2YWlsYWJsZUNhbGVuZGFycygpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBhdmFpbGFibGVDYWxl
bmRhcnM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0
ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0geworICAgICAgICBhdmFpbGFibGVDYWxl
bmRhcnMuY29uc3RydWN0KCk7CisgICAgICAgIEFTU0VSVChhdmFpbGFibGVDYWxlbmRhcnMtPmlz
RW1wdHkoKSk7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBh
dXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRl
cjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZhbHVlc0ZvckxvY2FsZSgiY2FsZW5kYXJz
IiwgInVuZCIsIGZhbHNlLCAmc3RhdHVzKSk7Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
ZW51bWVyYXRlIGF2YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH0KKyAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IGF1dG8gZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxl
dGVyPHVlbnVtX2Nsb3NlPj4odWNhbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjYWxlbmRh
cnMiLCAidW5kIiwgZmFsc2UsICZzdGF0dXMpKTsKKyAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhz
dGF0dXMpKTsKIAotICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3VudChlbnVtZXJhdGlvbi5n
ZXQoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2
YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICAg
ICAgaW50MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50KGVudW1lcmF0aW9uLmdldCgpLCAmc3RhdHVz
KTsKKyAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKyAgICAgICAgYXZhaWxhYmxl
Q2FsZW5kYXJzLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKIAotICAgIFZlY3RvcjxT
dHJpbmcsIDE+IGVsZW1lbnRzOwotICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
Y291bnQpOwotICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpIHsKLSAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwotICAgICAgICBjb25zdCBjaGFyKiBw
b2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1cyk7
Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxl
IGNhbGVuZGFycyJfcyk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRvIGNy
ZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyA9IFsmXShTdHJpbmcmJiBzdHJpbmcpIHsKKyAg
ICAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Rh
dGljU3RyaW5nSW1wbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgeworICAgICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgICAgICAg
ICAgY29uc3QgY2hhciogcG9pbnRlciA9IHVlbnVtX25leHQoZW51bWVyYXRpb24uZ2V0KCksICZs
ZW5ndGgsICZzdGF0dXMpOworICAgICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsK
KyAgICAgICAgICAgIFN0cmluZyBjYWxlbmRhcihwb2ludGVyLCBsZW5ndGgpOworICAgICAgICAg
ICAgaWYgKGF1dG8gbWFwcGVkID0gbWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0NyhjYWxlbmRh
cikpCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlQ2FsZW5kYXJzLT5hcHBlbmQoY3JlYXRlSW1t
b3J0YWxUaHJlYWRTYWZlU3RyaW5nKFdURk1vdmUobWFwcGVkLnZhbHVlKCkpKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlQ2FsZW5kYXJzLT5hcHBlbmQoY3Jl
YXRlSW1tb3J0YWxUaHJlYWRTYWZlU3RyaW5nKFdURk1vdmUoY2FsZW5kYXIpKSk7CiAgICAgICAg
IH0KLSAgICAgICAgU3RyaW5nIGNhbGVuZGFyKHBvaW50ZXIsIGxlbmd0aCk7Ci0gICAgICAgIGlm
IChhdXRvIG1hcHBlZCA9IG1hcElDVUNhbGVuZGFyS2V5d29yZFRvQkNQNDcoY2FsZW5kYXIpKQot
ICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUobWFwcGVkLnZhbHVlKCkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUoY2FsZW5kYXIp
KTsKLSAgICB9CiAKLSAgICAvLyBUaGUgQXZhaWxhYmxlQ2FsZW5kYXJzIGFic3RyYWN0IG9wZXJh
dGlvbiByZXR1cm5zIGEgTGlzdCwgb3JkZXJlZCBhcyBpZiBhbiBBcnJheSBvZiB0aGUgc2FtZQot
ICAgIC8vIHZhbHVlcyBoYWQgYmVlbiBzb3J0ZWQgdXNpbmcgJUFycmF5LnByb3RvdHlwZS5zb3J0
JSB1c2luZyB1bmRlZmluZWQgYXMgY29tcGFyZWZuCi0gICAgc3RkOjpzb3J0KGVsZW1lbnRzLmJl
Z2luKCksIGVsZW1lbnRzLmVuZCgpLAotICAgICAgICBbXShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYikgewotICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBvaW50Q29tcGFyZShh
LCBiKSA8IDA7Ci0gICAgICAgIH0pOworICAgICAgICAvLyBUaGUgQXZhaWxhYmxlQ2FsZW5kYXJz
IGFic3RyYWN0IG9wZXJhdGlvbiByZXR1cm5zIGEgTGlzdCwgb3JkZXJlZCBhcyBpZiBhbiBBcnJh
eSBvZiB0aGUgc2FtZQorICAgICAgICAvLyB2YWx1ZXMgaGFkIGJlZW4gc29ydGVkIHVzaW5nICVB
cnJheS5wcm90b3R5cGUuc29ydCUgdXNpbmcgdW5kZWZpbmVkIGFzIGNvbXBhcmVmbgorICAgICAg
ICBzdGQ6OnNvcnQoYXZhaWxhYmxlQ2FsZW5kYXJzLT5iZWdpbigpLCBhdmFpbGFibGVDYWxlbmRh
cnMtPmVuZCgpLAorICAgICAgICAgICAgW10oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlKGEsIGIp
IDwgMDsKKyAgICAgICAgICAgIH0pOworICAgIH0pOworICAgIHJldHVybiBhdmFpbGFibGVDYWxl
bmRhcnM7Cit9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJv
bVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CitDYWxlbmRh
cklEIGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8Q2FsZW5k
YXJJRD46Om1heCgpIH07CitDYWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEU2xvdygpCit7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9v
bmNlKGluaXRpYWxpemVPbmNlLCBbJl0geworICAgICAgICBjb25zdCBhdXRvJiBjYWxlbmRhcnMg
PSBpbnRsQXZhaWxhYmxlQ2FsZW5kYXJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGNhbGVuZGFycy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlm
IChjYWxlbmRhcnNbaW5kZXhdID09ICJpc284NjAxIl9zKSB7CisgICAgICAgICAgICAgICAgaXNv
ODYwMUNhbGVuZGFySURTdG9yYWdlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSk7CisgICAgcmV0dXJuIGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZW51bWVyYXRpb24vI3NlYy1hdmFp
bGFibGVjYWxlbmRhcnMKK3N0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDYWxlbmRhcnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlQXJyYXlGcm9tU3Ry
aW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgaW50bEF2YWlsYWJsZUNhbGVuZGFycygpKTsKIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZW51bWVyYXRpb24vI3NlYy1hdmFpbGFi
bGVjb2xsYXRpb25zCkBAIC0xODY0LDIxICsxODg1LDQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGludGxPYmplY3RGdW5jU3VwcG9ydGVkVmFsdWVzT2YsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmEKICAgICByZXR1cm4geyB9OwogfQogCi1KU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJpbmdW
ZWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVmVjdG9yPFN0cmluZywgMT4mJiBl
bGVtZW50cykKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNBcnJheSogcmVzdWx0ID0g
SlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgZWxlbWVudHMu
c2l6ZSgpKTsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpIHsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGlu
ZGV4LCBqc1N0cmluZyh2bSwgV1RGTW92ZShlbGVtZW50c1tpbmRleF0pKSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oCmluZGV4IGRjNjk2ZDY1ZmE1YzYzNjMyMmE2YzUxNGY4YjAwNzg0ZGVmMmZj
NmIuLmYyMTM3ZGUzNWU5M2E1MWU1Yzg1NTJkYTZhZGY4OWI0NTlkNTA5N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTEwMSw2ICsxMDEsMTkgQEAg
aW5saW5lIGNvbnN0IExvY2FsZVNldCYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygp
IHsgcmV0dXJuIGludGxBdmFpbGFibGUKIGlubGluZSBjb25zdCBMb2NhbGVTZXQmIGludGxSZWxh
dGl2ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxv
Y2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsZVNldCYgaW50bExpc3RGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogCit1c2luZyBD
YWxlbmRhcklEID0gdW5zaWduZWQ7Citjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJs
ZUNhbGVuZGFycygpOworCitleHRlcm4gQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5kYXJJRFN0b3Jh
Z2U7CitDYWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEU2xvdygpOworaW5saW5lIENhbGVuZGFy
SUQgaXNvODYwMUNhbGVuZGFySUQoKQoreworICAgIHVuc2lnbmVkIHZhbHVlID0gaXNvODYwMUNh
bGVuZGFySURTdG9yYWdlOworICAgIGlmICh2YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPENh
bGVuZGFySUQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGlzbzg2MDFDYWxlbmRhcklEU2xvdygp
OworICAgIHJldHVybiB2YWx1ZTsKK30KKwogVHJpU3RhdGUgaW50bEJvb2xlYW5PcHRpb24oSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lKTsKIFN0cmluZyBp
bnRsU3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3Bl
cnR5TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0
IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CiB1bnNpZ25lZCBpbnRsTnVt
YmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5zaWduZWQgZmFsbGJhY2sp
OwpAQCAtMTQ4LDYgKzE2MSw0IEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VDb2xsYXRp
b25LZXl3b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcmKTsKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBt
YXBJQ1VDYWxlbmRhcktleXdvcmRUb0JDUDQ3KGNvbnN0IFN0cmluZyYpOwogc3RkOjpvcHRpb25h
bDxTdHJpbmc+IG1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQoY29uc3QgU3RyaW5nJik7CiAK
LUpTQXJyYXkqIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihKU0dsb2JhbE9iamVjdCosIFZl
Y3RvcjxTdHJpbmcsIDE+JiYpOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IGQ4YjBhYmE2
MjcyNGViNTVmYmU1YWZkNzY1N2U0Y2E1NTJhMWI0YmIuLmQ0MTAyNDk1MzBlMDRiZTBmZTQ4MjY2
YmY0YmRhNzQ3NWEwMGYxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMjI1LDQgKzIyNSwyMiBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGludGxDb2VyY2VPcHRpb25zVG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZQogICAgIHJldHVybiBvcHRpb25zOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b250YWluZXI+CitKU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQ29udGFpbmVyJiBlbGVtZW50cykKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgZWxlbWVudHMuc2l6ZSgpKTsKKyAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCBqc1N0cmluZyh2bSwg
ZWxlbWVudHNbaW5kZXhdKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDE1ZjViMDY0ZWNiZmM2NThhOTkwZDJlYjU5NjM1YmYyYmRiZTg4ODIuLmQ0NTY3ZWZlOTAy
NmM5YTY0NzVlZDQ1YWJlYTJhZWM2Yzc0ODY0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwMSw2ICsyMDEsOSBAQAogI2lu
Y2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5o
IgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5o
IgpAQCAtMTIxMiw2ICsxMjE1LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIGludGws
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAog
ICAgIGlmIChPcHRpb25zOjp1c2VUZW1wb3JhbCgpKSB7CisgICAgICAgIG1fY2FsZW5kYXJTdHJ1
Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVj
dHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAg
ICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogY2FsZW5kYXJQcm90b3R5cGUgPSBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5p
dC5zZXQoVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9i
amVjdCwgY2FsZW5kYXJQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIFRl
bXBvcmFsT2JqZWN0KiB0ZW1wb3JhbCA9IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGUodm0sIFRlbXBv
cmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlRlbXBvcmFsLCB0ZW1wb3Jh
bCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIH0KQEAgLTIwOTAsNiArMjEwMCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0
LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCisgICAgdGhpc09i
amVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyU3RyaWN0RnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMTc1YjhiNmI5MTQz
NmI2OTNmZmQzMWRmYmM2Nzg3YTQxNTQ2ZDg5Zi4uMTI0NjU4ZjI0NTJlMGM1YWQwZmRlZWIxNGU5
MGJlNjM4OThkYjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0zMjQsNiArMzI0LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eUNsYXNzU3RydWN0dXJl
IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlOwogCisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1Y3R1cmU7CisKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdl
dHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVs
bFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8
TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJTdHJpY3RGdW5jdGlvbjsKQEAgLTg3MCw2
ICs4NzIsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoKSB7IHJl
dHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQogICAgIEpT
T2JqZWN0KiBudW1iZXJGb3JtYXRQcm90b3R5cGUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KIAorICAgIFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsgfQorCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZjZTM1ZWE2MzJhNWE1OTA3YWU0MTkwNzA3NDRiYTE0ZGI3MTkx
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxDYWxlbmRhcjo6c19pbmZvID0geyAiT2Jq
ZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShUZW1wb3JhbENhbGVuZGFyKSB9OworCituYW1lc3BhY2UgVGVtcG9yYWxDYWxlbmRhckludGVy
bmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK1RlbXBv
cmFsQ2FsZW5kYXIqIFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDYWxlbmRhcklEIGlkZW50aWZpZXIpCit7CisgICAgVGVtcG9yYWxDYWxlbmRh
ciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhcj4o
dm0uaGVhcCkpIFRlbXBvcmFsQ2FsZW5kYXIodm0sIHN0cnVjdHVyZSwgaWRlbnRpZmllcik7Cisg
ICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKwor
U3RydWN0dXJlKiBUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsQ2Fs
ZW5kYXI6OlRlbXBvcmFsQ2FsZW5kYXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2Fs
ZW5kYXJJRCBpZGVudGlmaWVyKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4g
VGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIoU3RyaW5nVmlldyBzdHJpbmcpCit7
CisgICAgY29uc3QgYXV0byYgY2FsZW5kYXJzID0gaW50bEF2YWlsYWJsZUNhbGVuZGFycygpOwor
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGNhbGVuZGFycy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgaWYgKGNhbGVuZGFyc1tpbmRleF0gPT0gc3RyaW5nKQorICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wYXJz
ZXRlbXBvcmFsY2FsZW5kYXJzdHJpbmcKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+
IHBhcnNlVGVtcG9yYWxDYWxlbmRhclN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJpbmdWaWV3KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcGFyc2luZyB0ZW1wb3Jh
bCBjYWxlbmRhciBzdHJpbmcsIHdoaWNoIHJlcXVpcmVzIGZ1bGwgSVNPIDg2MDEgcGFyc2VyLgor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJpbnZhbGlkIGNhbGVuZGFyIElEIl9zKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10
b3RlbXBvcmFsY2FsZW5kYXIKK0pTT2JqZWN0KiBUZW1wb3JhbENhbGVuZGFyOjpmcm9tKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY2FsZW5kYXJMaWtlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBpZiAoY2FsZW5kYXJMaWtlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgSlNPYmplY3QqIGNhbGVuZGFyTGlrZU9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGVu
ZGFyTGlrZSk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gaW1wbGVtZW50IGNvZGUg
cmV0cmlldmluZyBDYWxlbmRhciBmcm9tIFRlbXBvcmFsIERhdGUgTGlrZSBvYmplY3RzLiBCdXQK
KyAgICAgICAgLy8gY3VycmVudGx5IHRoZXkgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisKKyAg
ICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGNhbGVuZGFyTGlrZU9iamVjdC0+aGFzUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghaGFzUHJvcGVydHkpCisg
ICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2FsZW5kYXJMaWtlKTsKKworICAg
ICAgICBjYWxlbmRhckxpa2UgPSBjYWxlbmRhckxpa2VPYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICAgICAgaWYgKGNhbGVuZGFyTGlrZS5p
c09iamVjdCgpKSB7CisgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oY2FsZW5kYXJMaWtlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5jYWxlbmRhcik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgICAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2FsZW5kYXJMaWtlKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGF1dG8gaWRlbnRpZmllciA9IGNhbGVuZGFyTGlrZS50b1dURlN0cmluZyhnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPENhbGVuZGFySUQ+IGNhbGVuZGFySWQgPSBpc0J1aWx0aW5DYWxlbmRhcihpZGVu
dGlmaWVyKTsKKyAgICBpZiAoIWNhbGVuZGFySWQpIHsKKyAgICAgICAgY2FsZW5kYXJJZCA9IHBh
cnNlVGVtcG9yYWxDYWxlbmRhclN0cmluZyhnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIEFTU0VS
VChjYWxlbmRhcklkKTsKKyAgICByZXR1cm4gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGNhbGVuZGFySWQudmFsdWUoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxDYWxlbmRhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMTE0ZTZkNDdjNDJkZjY2OTA2YWNj
YWI5Mjk1NTlkNWUyYTQyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0udGVtcG9yYWxDYWxlbmRhclNwYWNlPG1v
ZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5kYXIqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIENhbGVuZGFySUQpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBDYWxlbmRhcklEIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKyAgICBib29sIGlzSVNPODYwMSgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
ciA9PSBpc284NjAxQ2FsZW5kYXJJRCgpOyB9CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
YWxlbmRhcklEPiBpc0J1aWx0aW5DYWxlbmRhcihTdHJpbmdWaWV3KTsKKworICAgIHN0YXRpYyBK
U09iamVjdCogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCitwcml2YXRlOgorICAg
IFRlbXBvcmFsQ2FsZW5kYXIoVk0mLCBTdHJ1Y3R1cmUqLCBDYWxlbmRhcklEKTsKKworICAgIENh
bGVuZGFySUQgbV9pZGVudGlmaWVyIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGZhYTNmZmNkMDQ0NDc3MmM0MWE0
Y2I3MzU2YTJkNjg2NzBhNjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEx
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3JGdW5jRnJvbSk7
CisKK30KKworI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywg
JnRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBU
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3JUYWJsZQorICAgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAor
Ki8KKworVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKiBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKQoreworICAgIFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3Ry
dWN0b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihj
YWxsVGVtcG9yYWxDYWxlbmRhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihj
b25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyKTsKKworVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
OjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBvcmFsQ2Fs
ZW5kYXIsIGNvbnN0cnVjdFRlbXBvcmFsQ2FsZW5kYXIpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUqIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRhciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RS
VUNUVVJFKHZtLCBjYWxlbmRhclN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IGNhbGVuZGFyU3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IGlkZW50aWZpZXIgPSBUZW1wb3JhbENhbGVuZGFyOjpp
c0J1aWx0aW5DYWxlbmRhcihjYWxlbmRhclN0cmluZyk7CisgICAgaWYgKCFpZGVudGlmaWVyKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBj
YWxlbmRhciBJRCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwg
aWRlbnRpZmllci52YWx1ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxs
VGVtcG9yYWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbGVuZGFyIikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbENhbGVuZGFyOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWE5Nzc1MGFkOWJlNzc0Y2E0MDE5MTY5ZTVkMTk1MTRhODU1ZDY2
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU7CisKK2NsYXNzIFRlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5kYXJD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6Cisg
ICAgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdmYzc0MWFlNThkZjFiYTJlMDhjOTQ3YzY4YWYyN2E5
Nzc2OGJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkl0ZXJhdG9y
T3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNN
ZXJnZUZpZWxkcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jVG9KU09OKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVHZXR0ZXJJZCk7
CisKK30KKworI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVtcG9yYWwuQ2FsZW5kYXIiLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVUYWJs
ZQorICAgIGZpZWxkcyAgICAgICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY0ZpZWxk
cyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbWVyZ2VGaWVsZHMgICAgIHRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VGaWVsZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAg
ICB0b1N0cmluZyAgICAgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb1N0cmluZyAg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorICAgIHRvSlNPTiAgICAgICAgICB0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgICAgaWQg
ICAgICAgICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVHZXR0ZXJJZCAgICAgICAgIFJl
YWRPbmx5fERvbnRFbnVtfEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSog
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLWdl
dC10ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUuaWQKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlR2V0dGVySWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKS50b1N0
cmluZyhnbG9iYWxPYmplY3QpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzdXAtdGVtcG9yYWwuY2FsZW5kYXIucHJvdG90eXBlLmZpZWxkcworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jRmllbGRzLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNh
bGVuZGFyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLmZpZWxkcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDYWxlbmRhciJfcyk7CisKKyAg
ICBib29sIGlzSVNPODYwMSA9IGNhbGVuZGFyLT5pc0lTTzg2MDEoKTsKKyAgICBib29sIHNob3Vs
ZEFkZEVyYUFuZEVyYVllYXIgPSBmYWxzZTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBmaWVs
ZE5hbWVzOworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSwgW2lzSVNPODYwMSwgJnNob3VsZEFkZEVyYUFuZEVyYVllYXIsICZmaWVsZE5h
bWVzXShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
IHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAg
ICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmaWVsZHMgaW5jbHVkZSBub24gc3RyaW5nIHZhbHVlIl9zKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzSVNPODYwMSAm
JiAhc2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgeworICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBq
c0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaWYgKHN0
cmluZyA9PSAieWVhciJfcykKKyAgICAgICAgICAgICAgICBzaG91bGRBZGRFcmFBbmRFcmFZZWFy
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBmaWVsZE5hbWVzLmFwcGVuZCh2YWx1ZSk7Cisg
ICAgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChz
aG91bGRBZGRFcmFBbmRFcmFZZWFyKSB7CisgICAgICAgIGZpZWxkTmFtZXMuYXBwZW5kKGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXJhLmltcGwoKSkpOworICAgICAg
ICBmaWVsZE5hbWVzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmVyYVllYXIuaW1wbCgpKSk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqPihudWxscHRyKSwgZmllbGROYW1lcykpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1kZWZhdWx0bWVyZ2VmaWVsZHMKK3N0
YXRpYyBKU09iamVjdCogZGVmYXVsdE1lcmdlRmllbGRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBmaWVsZHMsIEpTT2JqZWN0KiBhZGRpdGlvbmFsRmllbGRzKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBtZXJnZWQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOworCisgICAgeworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBv
cmlnaW5hbEtleXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xN
b2RlOjpFeGNsdWRlKTsKKyAgICAgICAgZmllbGRzLT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMoZmllbGRzLCBnbG9iYWxPYmplY3QsIG9yaWdpbmFsS2V5cywgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBuZXh0S2V5IDogb3JpZ2luYWxL
ZXlzKSB7CisgICAgICAgICAgICBpZiAobmV4dEtleSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250
aCAmJiBuZXh0S2V5ICE9IHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSkgeworICAgICAgICAg
ICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gZmllbGRzLT5nZXQoZ2xvYmFsT2JqZWN0LCBuZXh0
S2V5KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICAgICAgICAgIGlmICghcHJvcFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QobWVyZ2VkLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIG5leHRLZXksIHByb3BW
YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgYm9vbCBpbmNsdWRlc01vbnRoT3JNb250aENvZGUgPSBmYWxzZTsKKyAgICB7
CisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG5ld0tleXModm0sIFByb3BlcnR5TmFtZU1vZGU6
OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgYWRkaXRpb25h
bEZpZWxkcy0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFkZGl0aW9uYWxG
aWVsZHMsIGdsb2JhbE9iamVjdCwgbmV3S2V5cywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5j
bHVkZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBuZXh0S2V5IDogbmV3S2V5cykgeworICAgICAgICAgICAgaWYg
KCFpbmNsdWRlc01vbnRoT3JNb250aENvZGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV4dEtl
eSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCB8fCBuZXh0S2V5ID09IHZtLnByb3BlcnR5TmFt
ZXMtPm1vbnRoQ29kZSkKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXNNb250aE9yTW9udGhD
b2RlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNWYWx1ZSBwcm9wVmFs
dWUgPSBhZGRpdGlvbmFsRmllbGRzLT5nZXQoZ2xvYmFsT2JqZWN0LCBuZXh0S2V5KTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAo
IXByb3BWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QobWVyZ2VkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBtZXJnZWQtPnB1dE93bkRh
dGFQcm9wZXJ0eSh2bSwgbmV4dEtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKCFpbmNsdWRlc01vbnRoT3JNb250aENvZGUpIHsKKyAgICAg
ICAgSlNWYWx1ZSBtb250aCA9IGZpZWxkcy0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+bW9udGgpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIW1vbnRoLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBtZXJnZWQtPnB1dE93bkRh
dGFQcm9wZXJ0eSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bW9udGgsIG1vbnRoLCBzbG90KTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBKU1ZhbHVlIG1vbnRoQ29kZSA9IGZpZWxkcy0+Z2V0KGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+bW9udGhDb2RlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFtb250aENvZGUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QobWVyZ2VkLCB0cnVlKTsKKyAgICAgICAgICAg
IG1lcmdlZC0+cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aENv
ZGUsIG1vbnRoQ29kZSwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1lcmdlZDsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtdGVtcG9yYWwuY2FsZW5k
YXIucHJvdG90eXBlLm1lcmdlZmllbGRzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZUZ1bmNNZXJnZUZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byogY2FsZW5kYXIgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYWxlbmRhcikKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNh
bGVuZGFyLnByb3RvdHlwZS5tZXJnZUZpZWxkcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDYWxlbmRhciJfcyk7CisKKyAgICBhdXRvKiBmaWVs
ZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIGFkZGl0aW9uYWxG
aWVsZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChjYWxlbmRhci0+
aXNJU084NjAxKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGRlZmF1bHRNZXJnZUZpZWxkcyhnbG9iYWxPYmplY3QsIGZpZWxkcywgYWRkaXRpb25h
bEZpZWxkcykpKTsKKworICAgIGF1dG8gY29weU9iamVjdCA9IFtdKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpIC0+IEpTT2JqZWN0KiB7CisgICAgICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgICAgIGF1dG8qIGNvcGllZCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkga2V5cyh2
bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUp
OworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGdsb2JhbE9iamVjdCwga2V5cywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3BW
YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwga2V5KTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXByb3BWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29w
aWVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBjb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2
bSwga2V5LCBwcm9wVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gY29waWVkOworICAgIH07CisKKyAgICBhdXRvKiBmaWVsZHNDb3BpZWQgPSBjb3B5T2Jq
ZWN0KGdsb2JhbE9iamVjdCwgZmllbGRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgYXV0byogYWRkaXRpb25hbEZpZWxkc0NvcGllZCA9IGNvcHlPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBhZGRpdGlvbmFsRmllbGRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBuZXdNb250aCA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgSlNWYWx1ZSBuZXdNb250aENvZGUgPSBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgbmV3
WWVhciA9IGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBuZXdFcmEgPSBqc1VuZGVmaW5lZCgp
OworICAgIEpTVmFsdWUgbmV3RXJhWWVhciA9IGpzVW5kZWZpbmVkKCk7CisgICAgeworICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBrZXlzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQ
cml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CisgICAgICAgIGFkZGl0aW9uYWxGaWVsZHNDb3Bp
ZWQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhZGRpdGlvbmFsRmllbGRz
Q29waWVkLCBnbG9iYWxPYmplY3QsIGtleXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAg
IGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgSlNWYWx1ZSBwcm9w
VmFsdWUgPSBhZGRpdGlvbmFsRmllbGRzQ29waWVkLT5nZXQoZ2xvYmFsT2JqZWN0LCBrZXkpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAg
IGlmICghcHJvcFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5
ID09IHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoKQorICAgICAgICAgICAgICAgICAgICBuZXdNb250
aCA9IHByb3BWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+bW9udGhDb2RlKQorICAgICAgICAgICAgICAgICAgICBuZXdNb250aENvZGUgPSBw
cm9wVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09IHZtLnByb3BlcnR5TmFt
ZXMtPnllYXIpCisgICAgICAgICAgICAgICAgICAgIG5ld1llYXIgPSBwcm9wVmFsdWU7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09IHZtLnByb3BlcnR5TmFtZXMtPmVyYSkKKyAgICAg
ICAgICAgICAgICAgICAgbmV3RXJhID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5lcmFZZWFyKQorICAgICAgICAgICAgICAgICAg
ICBuZXdFcmFZZWFyID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaWVsZHNDb3BpZWQsIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwg
a2V5LCBwcm9wVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICghbmV3TW9udGguaXNVbmRlZmluZWQoKSB8fCAhbmV3
TW9udGhDb2RlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0Nv
cGllZC0+cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCwgbmV3
TW9udGgsIHNsb3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChmaWVsZHNDb3BpZWQsIHRydWUpOworICAgICAgICAgICAgZmllbGRzQ29waWVkLT5wdXRPd25E
YXRhUHJvcGVydHkodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSwgbmV3TW9udGhDb2Rl
LCBzbG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5ld1llYXIuaXNVbmRlZmluZWQoKSB8fCAhbmV3
RXJhLmlzVW5kZWZpbmVkKCkgfHwgIW5ld0VyYVllYXIuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaWVsZHNDb3BpZWQsIHRydWUp
OworICAgICAgICAgICAgZmllbGRzQ29waWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnllYXIsIG5ld1llYXIsIHNsb3QpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaWVsZHNDb3BpZWQsIHRydWUpOworICAgICAgICAgICAg
ZmllbGRzQ29waWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHZtLnByb3BlcnR5TmFtZXMtPmVy
YSwgbmV3RXJhLCBzbG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+cHV0
T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmFZZWFyLCBuZXdFcmFZZWFy
LCBzbG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZpZWxkc0NvcGll
ZCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLmNhbGVuZGFyLnByb3RvdHlwZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGNhbGVuZGFyID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbENhbGVuZGFy
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY2FsZW5kYXIpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5DYWxlbmRhci5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ2FsZW5kYXIiX3MpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW50bEF2YWlsYWJsZUNhbGVuZGFycygpW2NhbGVu
ZGFyLT5pZGVudGlmaWVyKCldKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmNhbGVuZGFyLnByb3RvdHlwZS50b2pzb24KK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TdHJpbmco
Z2xvYmFsT2JqZWN0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJjNWY4NDgwZDhjMzRmMjAxYzQ3Y2I4ZWExYmU0MmY2NGRkNmU3ZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRl
eCBhZjE0MzY3NWYxZTRjNjI4N2VhMmJlMThmNDMzZWViZTM3MmE3MTdkLi44ZjQ4MjJiNzY0NGM0
YTg0MWFkMDYzZjYwNmYwZjMzYzc4MmMzM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjAsMTYgKzIxLDI2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5v
dy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKFRlbXBvcmFsT2JqZWN0KTsKIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlQ2FsZW5k
YXJDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVGVtcG9yYWxP
YmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2Jh
bE9iamVjdCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1
cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3Jl
YXRlTm93T2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9i
amVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpA
QCAtNDUsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyogU291cmNlIGZvciBUZW1wb3Jh
bE9iamVjdC5sdXQuaAogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKKyAgQ2FsZW5kYXIgICAg
ICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZAogKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCAxZGVhNmExM2NiNGM0MjliOWIwNzE5OGJhYjZjNDRmMzE0NjlkMDY4Li4z
MDkzZTExNTViNmRmZGNhZjU3ZjBkNTBkZGM3ODJmYmQxNWM5ZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjIsNiArMTYyLDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTeW1i
b2xPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVz
dFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyLmgiCkBAIC0xNTg0LDYgKzE1ODUsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNl
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2wpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFN5bWJvbE9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVWludDhDbGFtcGVkQXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MTZB
cnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJjZWQ5ODQzZmNlODI2MjBl
ODhiOTc1MDE4M2FlYjYxNTU2MjYwNjkuLmFhNzU1OTdlZDhjNTEyZTllY2JlZjc0ZTQ2MDY2ZjI2
MmVkMTM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTkzLDYgKzE5Myw3
IEBAIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlT
Y29wZTsKK2NsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7CiBjbGFzcyBUb3BMZXZlbEdsb2JhbE9iamVj
dFNjb3BlOwogY2xhc3MgVHlwZVByb2ZpbGVyOwogY2xhc3MgVHlwZVByb2ZpbGVyTG9nOwpAQCAt
NTkxLDYgKzU5Miw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlT
cGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDc0ZjU2OTg4MmU2ZDQ2OTQ5
ODNmNzE5MGExNzcwMjE2ZGEyNmNjODcuLmQ1ODQ1MTAwY2UyNjFhMjg2MmRiNGExMGY2ZjgyMTJk
MzlhZmUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMjg0LDEyICsyODQs
MjIgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
U3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGNvbnN0IExDaGFy
KiBsY2hhckNoYXJhY3RlcnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyk7Ci0gICAgQVNTRVJUKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShsY2hhckNoYXJhY3RlcnMs
IGxlbmd0aCkpOwotICAgIFJlZjxTdHJpbmdJbXBsPiByZXN1bHQgPSBjcmVhdGVJbnRlcm5hbChs
Y2hhckNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgcmVzdWx0LT5zZXRIYXNoKFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpKTsK
KyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuICplbXB0eSgpOworICAgIFJlZjxTdHJp
bmdJbXBsPiByZXN1bHQgPSBjcmVhdGVJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAg
IHJlc3VsdC0+aGFzaCgpOworICAgIHJlc3VsdC0+bV9yZWZDb3VudCB8PSBzX3JlZkNvdW50Rmxh
Z0lzU3RhdGljU3RyaW5nOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVy
biAqZW1wdHkoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlOEJpdElmUG9z
c2libGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICByZXN1bHQtPmhhc2goKTsKICAgICByZXN1
bHQtPm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCA0OGVlODlkZGExZmZh
MjdmMzlmOTRjZmM2ZGQ3OTM0NjVkYjRjZDhjLi40NzQ1NTYzM2Y5OGFiYTJmNzY1ZGNlNWJiNjAy
MWE4YWYxYzhlYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMjU5LDcgKzI1OSwx
MyBAQCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhcGUgewogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYpOwogCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25z
dCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShiaXR3aXNl
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJh
Y3RlcnMpLCBsZW5ndGgpOworICAgIH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
IAogICAgIC8vIFJlYWxsb2NhdGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBt
dXN0IGJlIG9ubHkgb3duZWQgYnkgdGhlIFJlZiwKICAgICAvLyBhbmQgdGhlIGJ1ZmZlciBvd25l
cnNoaXAgbXVzdCBiZSBCdWZmZXJJbnRlcm5hbC4gSnVzdCBsaWtlIHRoZSBpbnB1dCBwb2ludGVy
IG9mIHJlYWxsb2MoKSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjM2NjQwNzk1ZDQ4NmYyYzYwYTc5MTFmMjkxZDMzYzI2NzU0NTA0MS4u
NzJjY2Q3NmZhMDI5MWE1MDRiZTdhZTI3MWUyMWFkZmEyNzE0ZjFlOSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAobmV3LlRlbXBvcmFsLkNhbGVuZGFyKToKKwogMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQgaW5j
b3JyZWN0bHkgcGFyc2VzIHBhdHRlcm5zIHdpdGggJ2gnIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9y
YWwtY2FsZW5kYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0Y2NkN2M4MjJlMzVhYzQxNzIxOWE5NDQzYTc5
MGRlZTQ1NzBiYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNh
bGVuZGFyLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQg
ZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJy
b3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5u
YW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBzaG91bGRC
ZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30KKworeworICAgIGxldCBjYWxlbmRhciA9IG5l
dyBUZW1wb3JhbC5DYWxlbmRhcigiaXNvODYwMSIpOworICAgIHNob3VsZEJlKGNhbGVuZGFyLmlk
LCBgaXNvODYwMWApOworICAgIHNob3VsZEJlKFN0cmluZyhjYWxlbmRhciksIGBpc284NjAxYCk7
Cit9Cit7CisgICAgbGV0IGNhbGVuZGFyID0gbmV3IFRlbXBvcmFsLkNhbGVuZGFyKCJncmVnb3J5
Iik7CisgICAgc2hvdWxkQmUoY2FsZW5kYXIuaWQsIGBncmVnb3J5YCk7CisgICAgc2hvdWxkQmUo
U3RyaW5nKGNhbGVuZGFyKSwgYGdyZWdvcnlgKTsKK30KKworc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgIG5ldyBUZW1wb3JhbC5DYWxlbmRhcigiZGlzY29yZGlhbiIpOworfSwgUmFuZ2VFcnJvciwg
YFJhbmdlRXJyb3I6IGludmFsaWQgY2FsZW5kYXIgSURgKTsKKworeworICAgIGxldCBpbnB1dCA9
IFsibW9udGhDb2RlIiwgImRheSJdOworICAgIGxldCBmaWVsZHMgPSBUZW1wb3JhbC5DYWxlbmRh
ci5mcm9tKCJpc284NjAxIikuZmllbGRzKGlucHV0KTsKKyAgICBzaG91bGRCZShpbnB1dCAhPT0g
ZmllbGRzLCB0cnVlKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShmaWVsZHMpLCBgWyJt
b250aENvZGUiLCJkYXkiXWApOworfQoreworICAgIGxldCBtZXJnZWQgPSBUZW1wb3JhbC5DYWxl
bmRhci5mcm9tKCdpc284NjAxJykubWVyZ2VGaWVsZHMoCisgICAgICB7IHllYXI6IDIwMDYsIG1v
bnRoOiA3LCBkYXk6IDMxIH0sCisgICAgICB7IG1vbnRoQ29kZTogJ00wOCcgfQorICAgICk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobWVyZ2VkKSwgYHsieWVhciI6MjAwNiwiZGF5Ijoz
MSwibW9udGhDb2RlIjoiTTA4In1gKTsKK30KK3sKKyAgICBjb25zdCB1c2VyID0geworICAgICAg
ICBpZDogNzc1LAorICAgICAgICB1c2VybmFtZTogJ3JvYm90Y2F0JywKKyAgICAgICAgcGFzc3dv
cmQ6ICdodW50ZXIyJywgLy8gTm90ZTogRG9uJ3QgcmVhbGx5IHN0b3JlIHBhc3N3b3JkcyBsaWtl
IHRoYXQKKyAgICAgICAgdXNlckNhbGVuZGFyOiBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCdncmVn
b3J5JykKKyAgICB9OworICAgIGxldCBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh1c2VyKTsKKyAg
ICBzaG91bGRCZShzdHJpbmcsIGB7ImlkIjo3NzUsInVzZXJuYW1lIjoicm9ib3RjYXQiLCJwYXNz
d29yZCI6Imh1bnRlcjIiLCJ1c2VyQ2FsZW5kYXIiOiJncmVnb3J5In1gKTsKKyAgICAvLyBUbyBy
ZWJ1aWxkIGZyb20gdGhlIHN0cmluZzoKKyAgICBmdW5jdGlvbiByZXZpdmVyKGtleSwgdmFsdWUp
IHsKKyAgICAgICAgaWYgKGtleS5lbmRzV2l0aCgnQ2FsZW5kYXInKSkKKyAgICAgICAgICAgIHJl
dHVybiBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKyAgICBzaG91bGRCZShKU09OLnBhcnNlKHN0cmluZywgcmV2aXZlcikudXNlckNh
bGVuZGFyIGluc3RhbmNlb2YgVGVtcG9yYWwuQ2FsZW5kYXIsIHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436757</attachid>
            <date>2021-08-29 22:42:43 -0700</date>
            <delta_ts>2021-08-30 03:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229651-20210829224243.patch</filename>
            <type>text/plain</type>
            <size>73514</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTBmZDBkZDM1MmRkOWJmODVhZGNmZmY5Y2IyY2VjNGFkYWI0OTRmLi4xNmQwZTMwODE2ZjViNzlk
MzRlMDEwYTdmNDgzNWM3YjU0MDA2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMS0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIFRlbXBvcmFsLkNhbGVuZGFyJ3Mgc2ltcGxlIHBhcnQuIEN1cnJlbnRseSwgd2UgZG8gbm90
IGltcGxlbWVudCBtYW55IHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXIgc2luY2UKKyAgICAgICAg
d2UgZG8gbm90IGhhdmUgVGVtcG9yYWwgRGF0ZS1saWtlIHN0cnVjdHVyZXMgeWV0LCBidXQgdGhp
cyBwYXRjaCBpbXBsZW1lbnRlZCBjb3JlIHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXI6IGtlZXBp
bmcgY2FsZW5kYXIKKyAgICAgICAgaWRlbnRpZmllci4KKworICAgICAgICBXZSBhbHNvIGRlZmVy
IGltcGxlbWVudGluZyBUZW1wb3JhbC5DYWxlbmRhci5mcm9tJ3MgY2FsZW5kYXIgSUQgcGFyc2lu
ZyBwYXJ0IHNpbmNlIGl0IHJlcXVpcmVzIGZ1bGwtZmxlZGdlZCBJU08gODYwMSBwYXJzZXIsCisg
ICAgICAgIHdoaWNoIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKwor
ICAgICAgICBXZSB1c2UgYHVuc2lnbmVkYCBmb3IgQ2FsZW5kYXJJRCwgYW5kIHRoaXMgaWQgY29y
cmVzcG9uZHMgdG8gdGhlIGFycmF5IGluZGV4IG9mIGludGxBdmFpbGFibGVDYWxlbmRhcnMsIHdo
aWNoIHJldHVybnMgYXJyYXkKKyAgICAgICAgb2YgU3RyaW5nIGZyb20gSUNVLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OmludGxBdmFpbGFibGVDYWxlbmRhcnMpOgorICAgICAgICAo
SlNDOjppc284NjAxQ2FsZW5kYXJJRFNsb3cpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDYWxl
bmRhcnMpOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppc284
NjAxQ2FsZW5kYXJJRCk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Y2FsZW5kYXJTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIpOgorICAgICAg
ICAoSlNDOjpwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpUZW1w
b3JhbENhbGVuZGFyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6
OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgIChKU0M6OmRlZmF1bHRNZXJnZUZpZWxkcyk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVDYWxlbmRhckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMjEtMDgtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIG9wZW5GaWxlIGZ1bmN0aW9uIHRvIGpzYy5jcHAgdGhhdCBsaW5rcyB0byBmaWxl
IGJhY2tlZCBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNDNjNTBjNjM0ZTlmMTg4ZjNmNGJmZjY1NmY5MWMxYmRiZDdj
OTNmNi4uZWZmNDlkNmZhYzM0ZmU5NWU2MGYyNDhiMzUyMDAxMjJlOTQxNzg2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKToKKwogMjAyMS0wOC0yOCAgQ2FtZXJvbiBN
Y0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc2NlbGxhbmVvdXMgdHlw
byBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRlMGVhZmYxYjYy
Mzk3MWIxYmM5MzgwOThmYWI1YmJmODhhMGU4OTUuLjU5MzA2ZTVkMzhlZTYwODlmMmI1MzA1ZDUw
YjBkZjk0YzE3ZmU4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEw
Nyw2ICsxMDcsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1RlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKIAogICAgIHdhc20v
anMvSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDcxYTgwZDY3ZmQ4MzRlMGRhM2Ri
OWFlYjNkYzA3OTBjODczOGZhYy4uMTIwMjVlYTAzOWFhYjY3NTcyYzIyZDM3ZTM4MmMzMjQ4Y2Q4
YjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2OSw2ICsxNjksOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiskKFBST0pFQ1Rf
RElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRp
bmcudHh0CiAkKFBST0pFQ1RfRElSKS91Y2QvRGVyaXZlZEJpbmFyeVByb3BlcnRpZXMudHh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggOWNmZmU5YWRiZGFiNTRjZjc3NTNiZDk3YzI1ZDgxZGJjNzA1MTgyMC4u
MDE2ZGE4Zjg1Yzk5OThmYzlkMTNhNzMyMjE4YTg0MTM5ZTJjMjIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjYsNiArNjYsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvU3RyaW5nQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdQcm90b3R5cGUubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1N5bWJvbFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE9iamVjdC5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9XYXNtQjNJUkdlbmVyYXRvcklubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NTQyYzdmNzc0NjVlMjZlMTlkNGE2OGE1ZGI3
NjA5MWZkZDQ2NTM5Li5jODJjZjI2MWJhYTAzMzljZWMyZDQ5M2U0ZWRkYTI3YzA1MDdjMDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTkxLDYgKzE5
MSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0Lmgg
XAogICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTeW1ib2xQcm90b3R5cGUubHV0
LmggXAorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAog
ICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTYwMTk2ZTJjNjcwMjNjODEwZDYyZjI1MDk2ODNiODEzZjFmZjA2OC4uMjNj
YmIyOThjZWI2NGI3OGM2MDE4MWMyZTRmZWRiOWYzOTg3MWFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4NDcsNiArMTg0Nyw5IEBACiAJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdy
aXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODBBNzZCMURDRDcx
OTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJDM0M2OTIzRTk0QzFFMDBCQzk3QzAg
LyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oICovOyB9OworCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0Eg
LyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8q
IFRlbXBvcmFsQ2FsZW5kYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMkQ0REUzMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmgg
Ki87IH07CisJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLzsgfTsKIAkJRTMzMDk1REQyMzIxMEExQjAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNENC
QjUyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAv
KiBSZWdFeHBHbG9iYWxEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MDIsNiArMTkwNSw4IEBACiAJCUUzOUJG
Mzk5MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUJGMzk4MjJBMjI4OEIwMEJEMTgz
RSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDhCMkQyMzAyMUUxRTAw
MjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CisJCUUzOURBMURBMjZEQjVFNEMwMDEw
MDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8q
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi87IH07CisJCUUzOURBMURCMjZEQjVF
NTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M0NjMwNTI2REI1REU5MDA4
OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlFMzlE
QTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzOUVFQUYzMjI4MTI0NTAwMDg0NzRGNCAvKiBDYWNoZWRTcGVjaWFsUHJv
cGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAvKiBDYWNo
ZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKIAkJ
RTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0
MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi87IH07CkBAIC01MDg3LDYgKzUwOTIsMTIgQEAK
IAkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckVycm9yQ29kZS5jcHA7IHBhdGggPSB5
YXJyL1lhcnJFcnJvckNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI4
MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmg7IHBhdGggPSB5YXJyL1lhcnJFcnJvckNv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyQzNDNjgyM0U5NEMxRTAwQkM5
N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMkQ0REUwMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVu
ZGFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsQ2Fs
ZW5kYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFMTI2REFGRDQy
MDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUyMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzJENERFMzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMkQ0REU1MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVG
QjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMDIsNiArNTIxMyw4IEBACiAJCUUz
QkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1
REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0MyOTVEQzFFRDJDQkFBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M0NjMwNjI2REI1
REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9TUkVudHJ5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0M2OTRCMjIzMDI2ODc0MDA2RkJFNDIgLyogV2FzbVRpZXJVcENvdW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21UaWVyVXBDb3VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQzczQThGMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5n
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU3RyZWFt
aW5nUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDA5LDYgKzcwMjIs
OCBAQAogCQkJCTk5NkI3MzExMUJEOUZBMkMwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5s
dXQuaCAqLywKIAkJCQk5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0
b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMz
NiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5
M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFE
QzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAt
Nzk1Myw2ICs3OTY4LDEyIEBACiAJCQkJRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmggKi8sCiAJCQkJQkRCNEI1RTA5OUNENEMxQkIzQzFDRjA1IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovLAorCQkJCUUzMkQ0REUwMjZE
QUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmNwcCAqLywKKwkJCQlFMzJENERFMzI2
REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovLAorCQkJCUUzMkQ0REU1MjZE
QUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlFMzJENERFMjI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyog
VGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1w
b3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9i
amVjdC5jcHAgKi8sCkBAIC0xMDY0OSw2ICsxMDY3MCwxMSBAQAogCQkJCUE3ODRBMjY0MTFEMTY2
MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzc5OTc4
MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAv
KiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURB
MURCMjZEQjVFNTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxD
YWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5REExREEyNkRCNUU0QzAw
MTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDUyYjkzZWU4ZDhiYmE2NjA2NGRiMjAxOGYzZjMxNzcwMmY3NmFhOWMuLjFlM2Fl
ZjQ1NTNkOTRhYmQ2YWY2ZDNkMjVkZjQxMzliMzA0ZDQ1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTEwMDksNiArMTAwOSw5IEBAIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAog
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogcnVu
dGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXIuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBy
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCAzM2UyYzdlMTJiYzNkODdiM2I1OGY4YWVlOTI1Mjc2OWY4YjY5NTljLi4xNDFkNWM0MGI3
YTUwZTI1Y2U0ZjVkMGYyNmJiNmJiNjQyODRkNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTExMCw2ICsxMTAsNyBAQAog
ICAgIG1hY3JvKGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhl
cmEpIFwKKyAgICBtYWNybyhlcmFZZWFyKSBcCiAgICAgbWFjcm8oZXJyb3JzKSBcCiAgICAgbWFj
cm8oZXZhbCkgXAogICAgIG1hY3JvKGV2ZW50cykgXApAQCAtMTY5LDYgKzE3MCw3IEBACiAgICAg
bWFjcm8obWluaW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAgbWFjcm8obWludXRlKSBcCiAg
ICAgbWFjcm8obW9udGgpIFwKKyAgICBtYWNybyhtb250aENvZGUpIFwKICAgICBtYWNybyhtdWx0
aWxpbmUpIFwKICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obmV4dCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA3ZjE2M2M2MGZkMDhi
M2U0ZjhjNTZjNDBlZWFmZWUwZDkxYzIxOTE1Li5jMTJiMzNiZmQyMTUxMjA2YTg1N2U0N2MxMDg3
ODdiMzY2NDE1YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcApAQCAtMTU3NCw0OSArMTU3NCw3MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9jYWxlQXJyYXkpOwogfQogCi0vLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJsZWNhbGVuZGFy
cwotc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMo
KQogewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gYXZhaWxhYmxlQ2FsZW5kYXJzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
WyZdIHsKKyAgICAgICAgYXZhaWxhYmxlQ2FsZW5kYXJzLmNvbnN0cnVjdCgpOworICAgICAgICBB
U1NFUlQoYXZhaWxhYmxlQ2FsZW5kYXJzLT5pc0VtcHR5KCkpOwogCi0gICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVl
X3B0cjxVRW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX2dldEtleXdv
cmRWYWx1ZXNGb3JMb2NhbGUoImNhbGVuZGFycyIsICJ1bmQiLCBmYWxzZSwgJnN0YXR1cykpOwot
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJz
Il9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlx
dWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5
d29yZFZhbHVlc0ZvckxvY2FsZSgiY2FsZW5kYXJzIiwgInVuZCIsIGZhbHNlLCAmc3RhdHVzKSk7
CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAKLSAgICBpbnQzMl90IGNvdW50
ID0gdWVudW1fY291bnQoZW51bWVyYXRpb24uZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJzIl9zKTsKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3Vu
dChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Mo
c3RhdHVzKSk7CisgICAgICAgIGF2YWlsYWJsZUNhbGVuZGFycy0+cmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb3VudCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKLSAgICBlbGVt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLSAgICBmb3IgKGludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIGludDMyX3QgbGVuZ3Ro
ID0gMDsKLSAgICAgICAgY29uc3QgY2hhciogcG9pbnRlciA9IHVlbnVtX25leHQoZW51bWVyYXRp
b24uZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byBjcmVhdGVJbW1vcnRhbFRocmVhZFNhZmVTdHJpbmcg
PSBbJl0oU3RyaW5nJiYgc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJ
bXBsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50
MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51
bV9uZXh0KGVudW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgICAg
IEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgICAgICBTdHJpbmcgY2FsZW5kYXIo
cG9pbnRlciwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG1hcHBlZCA9IG1hcElDVUNh
bGVuZGFyS2V5d29yZFRvQkNQNDcoY2FsZW5kYXIpKQorICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhXVEZNb3Zl
KG1hcHBlZC52YWx1ZSgpKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF2
YWlsYWJsZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhX
VEZNb3ZlKGNhbGVuZGFyKSkpOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBjYWxlbmRhcihw
b2ludGVyLCBsZW5ndGgpOwotICAgICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRh
cktleXdvcmRUb0JDUDQ3KGNhbGVuZGFyKSkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChX
VEZNb3ZlKG1hcHBlZC52YWx1ZSgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1l
bnRzLmFwcGVuZChXVEZNb3ZlKGNhbGVuZGFyKSk7Ci0gICAgfQogCi0gICAgLy8gVGhlIEF2YWls
YWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBhIExpc3QsIG9yZGVyZWQg
YXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKLSAgICAvLyB2YWx1ZXMgaGFkIGJlZW4gc29ydGVk
IHVzaW5nICVBcnJheS5wcm90b3R5cGUuc29ydCUgdXNpbmcgdW5kZWZpbmVkIGFzIGNvbXBhcmVm
bgotICAgIHN0ZDo6c29ydChlbGVtZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwKLSAgICAg
ICAgW10oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoYSwgYikgPCAwOwotICAgICAgICB9KTsKKyAgICAg
ICAgLy8gVGhlIEF2YWlsYWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBh
IExpc3QsIG9yZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKKyAgICAgICAgLy8gdmFs
dWVzIGhhZCBiZWVuIHNvcnRlZCB1c2luZyAlQXJyYXkucHJvdG90eXBlLnNvcnQlIHVzaW5nIHVu
ZGVmaW5lZCBhcyBjb21wYXJlZm4KKyAgICAgICAgc3RkOjpzb3J0KGF2YWlsYWJsZUNhbGVuZGFy
cy0+YmVnaW4oKSwgYXZhaWxhYmxlQ2FsZW5kYXJzLT5lbmQoKSwKKyAgICAgICAgICAgIFtdKGNv
bnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6Y29kZVBvaW50Q29tcGFyZShhLCBiKSA8IDA7CisgICAgICAgICAgICB9KTsKKyAgICB9
KTsKKyAgICByZXR1cm4gYXZhaWxhYmxlQ2FsZW5kYXJzOworfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGVsZW1lbnRzKSkpOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5kYXJJRFN0b3JhZ2Ug
eyBzdGQ6Om51bWVyaWNfbGltaXRzPENhbGVuZGFySUQ+OjptYXgoKSB9OworQ2FsZW5kYXJJRCBp
c284NjAxQ2FsZW5kYXJJRFNsb3coKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0
aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAg
ICAgICAgY29uc3QgYXV0byYgY2FsZW5kYXJzID0gaW50bEF2YWlsYWJsZUNhbGVuZGFycygpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXJzW2luZGV4XSA9PSAiaXNvODYw
MSJfcykgeworICAgICAgICAgICAgICAgIGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZSA9IGluZGV4
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworICAgIHJldHVybiBp
c284NjAxQ2FsZW5kYXJJRFN0b3JhZ2U7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY2FsZW5kYXJzCitzdGF0aWMgSlNBcnJh
eSogYXZhaWxhYmxlQ2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIGludGxB
dmFpbGFibGVDYWxlbmRhcnMoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1p
bnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY29sbGF0aW9ucwpAQCAtMTg2NCwyMSArMTg4
NSw0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZh
bHVlc09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSlNB
cnJheSogY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZlY3RvcjxTdHJpbmcsIDE+JiYgZWxlbWVudHMpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQ29udGlndW91cyksIGVsZW1lbnRzLnNpemUoKSk7Ci0gICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgZWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIFdURk1vdmUoZWxl
bWVudHNbaW5kZXhdKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBkYzY5NmQ2NWZh
NWM2MzYzMjJhNmM1MTRmOGIwMDc4NGRlZjJmYzZiLi5mMjEzN2RlMzVlOTNhNTFlNWM4NTUyZGE2
YWRmODliNDU5ZDUwOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCkBAIC0xMDEsNiArMTAxLDE5IEBAIGlubGluZSBjb25zdCBMb2NhbGVTZXQmIGludGxQ
bHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlCiBpbmxp
bmUgY29uc3QgTG9jYWxlU2V0JiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBMb2Nh
bGVTZXQmIGludGxMaXN0Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFp
bGFibGVMb2NhbGVzKCk7IH0KIAordXNpbmcgQ2FsZW5kYXJJRCA9IHVuc2lnbmVkOworY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKworZXh0ZXJuIENhbGVu
ZGFySUQgaXNvODYwMUNhbGVuZGFySURTdG9yYWdlOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5k
YXJJRFNsb3coKTsKK2lubGluZSBDYWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEKCkKK3sKKyAg
ICB1bnNpZ25lZCB2YWx1ZSA9IGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZTsKKyAgICBpZiAodmFs
dWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxDYWxlbmRhcklEPjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBpc284NjAxQ2FsZW5kYXJJRFNsb3coKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRy
aVN0YXRlIGludGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlv
bnMsIFByb3BlcnR5TmFtZSk7CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciog
ZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVk
IG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKQEAgLTE0OCw2ICsxNjEsNCBAQCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbWFwSUNVQ29sbGF0aW9uS2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5n
Jik7CiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyhj
b25zdCBTdHJpbmcmKTsKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBCQ1A0N1RvSUNVQ2FsZW5k
YXJLZXl3b3JkKGNvbnN0IFN0cmluZyYpOwogCi1KU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJp
bmdWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBWZWN0b3I8U3RyaW5nLCAxPiYmKTsKLQogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAppbmRleCBkOGIwYWJhNjI3MjRlYjU1ZmJlNWFmZDc2NTdlNGNhNTUyYTFi
NGJiLi5kNDEwMjQ5NTMwZTA0YmUwZmU0ODI2NmJmNGJkYTc0NzVhMDBmMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTIy
NSw0ICsyMjUsMjIgQEAgaW5saW5lIEpTT2JqZWN0KiBpbnRsQ29lcmNlT3B0aW9uc1RvT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICByZXR1cm4gb3B0aW9u
czsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPgorSlNBcnJheSogY3JlYXRlQXJy
YXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENv
bnRhaW5lciYgZWxlbWVudHMpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyks
IGVsZW1lbnRzLnNpemUoKSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIGVsZW1lbnRzW2luZGV4XSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNWY1YjA2NGVjYmZjNjU4YTk5MGQyZWI1
OTYzNWJmMmJkYmU4ODgyLi5kNDU2N2VmZTkwMjZjOWE2NDc1ZWQ0NWFiZWEyYWVjNmM3NDg2NDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0yMDEsNiArMjAxLDkgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgog
I2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKQEAgLTEyMTIsNiArMTIxNSwxMyBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVGVtcG9yYWwo
KSkgeworICAgICAgICBtX2NhbGVuZGFyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUq
IGNhbGVuZGFyUHJvdG90eXBlID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGNhbGVuZGFyUHJvdG90eXBlKSk7Cisg
ICAgICAgICAgICB9KTsKKwogICAgICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1w
b3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CkBAIC0yMDkwLDYgKzIxMDAsOCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKIAorICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CisKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0
ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVy
RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlclN0
cmljdEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDE3NWI4YjZiOTE0MzZiNjkzZmZkMzFkZmJjNjc4N2E0MTU0NmQ4OWYu
LjEyNDY1OGYyNDUyZTBjNWFkMGZkZWViMTRlOTBiZTYzODk4ZGIzMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI0LDYgKzMyNCw4
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOwog
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKIAorICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJl
OworCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVy
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0
dGVyU3RyaWN0RnVuY3Rpb247CkBAIC04NzAsNiArODcyLDggQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNPYmplY3QqIG51
bWJlckZvcm1hdENvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
Y29uc3RydWN0b3IodGhpcyk7IH0KICAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0UHJvdG90eXBl
KCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAK
KyAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRhclN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2UzNWVhNjMy
YTVhNTkwN2FlNDE5MDcwNzQ0YmExNGRiNzE5MWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsQ2FsZW5kYXI6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxDYWxlbmRhcikgfTsKKworbmFt
ZXNwYWNlIFRlbXBvcmFsQ2FsZW5kYXJJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQorCitUZW1wb3JhbENhbGVuZGFyKiBUZW1wb3JhbENhbGVuZGFy
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKQoreworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFyKHZt
LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxDYWxlbmRhcjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhbGVuZGFySUQgaWRlbnRpZmllcikKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IFRlbXBvcmFsQ2FsZW5kYXI6OmlzQnVpbHRpbkNh
bGVuZGFyKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIGNhbGVuZGFycyA9
IGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChjYWxlbmRh
cnNbaW5kZXhdID09IHN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbGNhbGVuZGFyc3RyaW5nCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldykKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHBhcnNpbmcgdGVtcG9yYWwgY2FsZW5kYXIgc3RyaW5nLCB3aGljaCByZXF1
aXJlcyBmdWxsIElTTyA4NjAxIHBhcnNlci4KKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGNhbGVuZGFyCitKU09iamVjdCog
VGVtcG9yYWxDYWxlbmRhcjo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNhbGVuZGFyTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGNhbGVu
ZGFyTGlrZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBjYWxlbmRhckxpa2VPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxlbmRhckxpa2UpOworCisgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGltcGxlbWVudCBjb2RlIHJldHJpZXZpbmcgQ2FsZW5kYXIgZnJvbSBUZW1w
b3JhbCBEYXRlIExpa2Ugb2JqZWN0cy4gQnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB0aGV5IGFy
ZSBub3QgaW1wbGVtZW50ZWQgeWV0LgorCisgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxl
bmRhckxpa2VPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09i
amVjdCo+KGNhbGVuZGFyTGlrZSk7CisKKyAgICAgICAgY2FsZW5kYXJMaWtlID0gY2FsZW5kYXJM
aWtlT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7
CisgICAgICAgIGlmIChjYWxlbmRhckxpa2UuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGVuZGFyTGlrZSktPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIGlmICghaGFz
UHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNhbGVu
ZGFyTGlrZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjYWxl
bmRhckxpa2UudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBjYWxlbmRh
cklkID0gaXNCdWlsdGluQ2FsZW5kYXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFjYWxlbmRhcklk
KSB7CisgICAgICAgIGNhbGVuZGFySWQgPSBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcoZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICB9CisKKyAgICBBU1NFUlQoY2FsZW5kYXJJZCk7CisgICAgcmV0dXJuIFRl
bXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVy
ZSgpLCBjYWxlbmRhcklkLnZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYTExNGU2ZDQ3YzQyZGY2NjkwNmFjY2FiOTI5NTU5ZDVlMmE0MmQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVGVtcG9yYWxDYWxlbmRhciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHZtLnRlbXBvcmFsQ2FsZW5kYXJTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBU
ZW1wb3JhbENhbGVuZGFyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBDYWxlbmRhcklEKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc0lTTzg2MDEo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIgPT0gaXNvODYwMUNhbGVuZGFySUQoKTsgfQor
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gaXNCdWlsdGluQ2FsZW5kYXIo
U3RyaW5nVmlldyk7CisKKyAgICBzdGF0aWMgSlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbENhbGVuZGFyKFZNJiwgU3RydWN0
dXJlKiwgQ2FsZW5kYXJJRCk7CisKKyAgICBDYWxlbmRhcklEIG1faWRlbnRpZmllciB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yRnVuY0Zyb20pOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZ0ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3JU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gdGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yVGFibGUKKyAgICBmcm9tICAg
ICAgICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1
Y3RvciogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSkKK3sKKyAgICBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50
ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhcik7CisK
K1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbENhbGVuZGFyLCBjb25zdHJ1Y3RUZW1wb3JhbENhbGVu
ZGFyKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIi
X3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9y
YWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1Rhcmdl
dCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgY2FsZW5kYXJTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBjYWxlbmRhclN0cmluZyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBpZGVu
dGlmaWVyID0gVGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIoY2FsZW5kYXJTdHJp
bmcpOworICAgIGlmICghaWRlbnRpZmllcikgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxl
bmRhcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxlbmRhciIpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxlbmRhcjo6
ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOTc3NTBhZDli
ZTc3NGNhNDAxOTE2OWU1ZDE5NTE0YTg1NWQ2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IgZmluYWwg
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IElu
dGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKwor
ICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZmM3
NDFhZTU4ZGYxYmEyZTA4Yzk0N2M2OGFmMjdhOTc3NjhiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKKyNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGVGdW5jRmllbGRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VGaWVsZHMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb1N0cmluZyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlR2V0dGVySWQpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLkNhbGVu
ZGFyIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiB0
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlVGFibGUKKyAgICBmaWVsZHMgICAgICAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIG1lcmdlRmllbGRzICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmll
bGRzICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgdG9TdHJpbmcgICAgICAgIHRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgICB0
b0pTT04gICAgICAgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb0pTT04gICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAorICAgIGlkICAgICAgICAgICAgICB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlR2V0dGVySWQgICAgICAgICBSZWFkT25seXxEb250RW51bXxDdXN0b21BY2Nlc3Nv
cgorQGVuZAorKi8KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6VGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy1nZXQtdGVtcG9yYWwuY2FsZW5kYXIucHJvdG90eXBl
LmlkCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUdl
dHRlcklkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KSk7Cit9CisKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFy
LnByb3RvdHlwZS5maWVsZHMKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlRnVuY0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
Y2FsZW5kYXIgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYWxlbmRhcikKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3Rv
dHlwZS5maWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgQ2FsZW5kYXIiX3MpOworCisgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+
aXNJU084NjAxKCk7CisgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7Cisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZmllbGROYW1lczsKKyAgICBmb3JFYWNoSW5JdGVyYWJs
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91
bGRBZGRFcmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGlu
Y2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFpc0lTTzg2MDEgJiYgIXNob3VsZEFkZEVyYUFuZEVyYVllYXIpIHsK
KyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1
ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJpbmcgPT0gInllYXIiX3MpCisgICAgICAgICAg
ICAgICAgc2hvdWxkQWRkRXJhQW5kRXJhWWVhciA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
ZmllbGROYW1lcy5hcHBlbmQodmFsdWUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoc2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgeworICAg
ICAgICBmaWVsZE5hbWVzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmVyYS5pbXBsKCkpKTsKKyAgICAgICAgZmllbGROYW1lcy5hcHBlbmQoanNOb250cml2
aWFsU3RyaW5nKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmFZZWFyLmltcGwoKSkpOworICAgIH0K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGZpZWxkTmFt
ZXMpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtZGVmYXVsdG1lcmdlZmllbGRzCitzdGF0aWMgSlNPYmplY3QqIGRlZmF1bHRNZXJnZUZp
ZWxkcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZmllbGRzLCBKU09i
amVjdCogYWRkaXRpb25hbEZpZWxkcykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogbWVyZ2VkID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKworICAgIHsK
KyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb3JpZ2luYWxLZXlzKHZtLCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CisgICAgICAgIGZpZWxk
cy0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZpZWxkcywgZ2xvYmFsT2Jq
ZWN0LCBvcmlnaW5hbEtleXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgbmV4dEtleSA6IG9yaWdpbmFsS2V5cykgeworICAgICAgICAgICAgaWYgKG5leHRL
ZXkgIT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGggJiYgbmV4dEtleSAhPSB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3BWYWx1ZSA9IGZp
ZWxkcy0+Z2V0KGdsb2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3BWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlZC0+cHV0T3duRGF0
YVByb3BlcnR5KHZtLCBuZXh0S2V5LCBwcm9wVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaW5jbHVkZXNNb250
aE9yTW9udGhDb2RlID0gZmFsc2U7CisgICAgeworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBu
ZXdLZXlzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6
RXhjbHVkZSk7CisgICAgICAgIGFkZGl0aW9uYWxGaWVsZHMtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhZGRpdGlvbmFsRmllbGRzLCBnbG9iYWxPYmplY3QsIG5ld0tleXMs
IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbmV4dEtleSA6
IG5ld0tleXMpIHsKKyAgICAgICAgICAgIGlmICghaW5jbHVkZXNNb250aE9yTW9udGhDb2RlKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5leHRLZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGgg
fHwgbmV4dEtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aENvZGUpCisgICAgICAgICAgICAg
ICAgICAgIGluY2x1ZGVzTW9udGhPck1vbnRoQ29kZSA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkcy0+Z2V0KGds
b2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG1lcmdlZCwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIG5leHRLZXksIHByb3BW
YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaW5jbHVk
ZXNNb250aE9yTW9udGhDb2RlKSB7CisgICAgICAgIEpTVmFsdWUgbW9udGggPSBmaWVsZHMtPmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFtb250aC5pc1VuZGVmaW5l
ZCgpKSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChtZXJnZWQsIHRydWUpOwor
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1vbnRoLCBtb250aCwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBtb250aENvZGUgPSBm
aWVsZHMtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghbW9u
dGhDb2RlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBtZXJnZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bW9udGhDb2RlLCBtb250aENvZGUsIHNsb3QpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBtZXJnZWQ7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFyLnByb3RvdHlwZS5tZXJnZWZpZWxkcworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VG
aWVsZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGNhbGVuZGFyID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghY2FsZW5kYXIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUubWVyZ2VGaWVsZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ2Fs
ZW5kYXIiX3MpOworCisgICAgYXV0byogZmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvKiBhZGRpdGlvbmFsRmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBpZiAoY2FsZW5kYXItPmlzSVNPODYwMSgpKQorICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZhdWx0TWVyZ2VGaWVsZHMoZ2xv
YmFsT2JqZWN0LCBmaWVsZHMsIGFkZGl0aW9uYWxGaWVsZHMpKSk7CisKKyAgICBhdXRvIGNvcHlP
YmplY3QgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0
KSAtPiBKU09iamVjdCogeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBh
dXRvKiBjb3BpZWQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworCisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IGtleXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3Ms
IFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBnbG9iYWxPYmplY3QsIGtleXMsIERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgSlNWYWx1ZSBwcm9wVmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvcGllZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
Y29waWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvcGllZDsKKyAgICB9OworCisgICAg
YXV0byogZmllbGRzQ29waWVkID0gY29weU9iamVjdChnbG9iYWxPYmplY3QsIGZpZWxkcyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIGFkZGl0aW9u
YWxGaWVsZHNDb3BpZWQgPSBjb3B5T2JqZWN0KGdsb2JhbE9iamVjdCwgYWRkaXRpb25hbEZpZWxk
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
bmV3TW9udGggPSBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgbmV3TW9udGhDb2RlID0ganNV
bmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld1llYXIgPSBqc1VuZGVmaW5lZCgpOworICAgIEpT
VmFsdWUgbmV3RXJhID0ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld0VyYVllYXIgPSBq
c1VuZGVmaW5lZCgpOworICAgIHsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkga2V5cyh2bSwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwor
ICAgICAgICBhZGRpdGlvbmFsRmllbGRzQ29waWVkLT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMoYWRkaXRpb25hbEZpZWxkc0NvcGllZCwgZ2xvYmFsT2JqZWN0LCBrZXlzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IGtleXMp
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkc0NvcGll
ZC0+Z2V0KGdsb2JhbE9iamVjdCwga2V5KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXByb3BWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCkK
KyAgICAgICAgICAgICAgICAgICAgbmV3TW9udGggPSBwcm9wVmFsdWU7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoa2V5ID09IHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSkKKyAgICAgICAg
ICAgICAgICAgICAgbmV3TW9udGhDb2RlID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyKQorICAgICAgICAgICAgICAgICAg
ICBuZXdZZWFyID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5lcmEpCisgICAgICAgICAgICAgICAgICAgIG5ld0VyYSA9IHByb3BW
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+
ZXJhWWVhcikKKyAgICAgICAgICAgICAgICAgICAgbmV3RXJhWWVhciA9IHByb3BWYWx1ZTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzQ29w
aWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAgICAg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5l
d01vbnRoLmlzVW5kZWZpbmVkKCkgfHwgIW5ld01vbnRoQ29kZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwg
dHJ1ZSk7CisgICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bW9udGgsIG5ld01vbnRoLCBzbG90KTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAg
ICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUsIG5ld01vbnRoQ29kZSwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFu
ZXdZZWFyLmlzVW5kZWZpbmVkKCkgfHwgIW5ld0VyYS5pc1VuZGVmaW5lZCgpIHx8ICFuZXdFcmFZ
ZWFyLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+
cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBuZXdZZWFyLCBz
bG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRz
Q29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3Bl
cnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmEsIG5ld0VyYSwgc2xvdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgICAgIHsK
KyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZXJhWWVhciwgbmV3RXJhWWVhciwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShmaWVsZHNDb3BpZWQpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUudG9zdHJp
bmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVu
Y1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBjYWxlbmRhciA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWNhbGVuZGFyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENh
bGVuZGFyIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
dGxBdmFpbGFibGVDYWxlbmRhcnMoKVtjYWxlbmRhci0+aWRlbnRpZmllcigpXSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRh
ci5wcm90b3R5cGUudG9qc29uCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzVmODQ4MGQ4YzM0ZjIw
MWM0N2NiOGVhMWJlNDJmNjRkZDZlN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0K
KworICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZShWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggYWYxNDM2NzVmMWU0YzYyODdlYTJiZTE4ZjQz
M2VlYmUzNzJhNzE3ZC4uOGY0ODIyYjc2NDRjNGE4NDFhZDA2M2Y2MDZmMGYzM2M3ODJjMzNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDE2ICsyMSwy
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAK
KyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbE9iamVjdCk7CiAK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVj
dCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2Fz
dDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgp
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0
PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTQ1LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIC8qIFNvdXJjZSBmb3IgVGVtcG9yYWxPYmplY3QubHV0LmgKIEBiZWdpbiB0ZW1wb3Jh
bE9iamVjdFRhYmxlCisgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3Ig
ICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVO
b3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQK
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWRlYTZhMTNjYjRjNDI5
YjliMDcxOThiYWI2YzQ0ZjMxNDY5ZDA2OC4uMzA5M2UxMTU1YjZkZmRjYWY1N2YwZDUwZGRjNzgy
ZmJkMTVjOWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTYyLDYg
KzE2Miw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTU4NCw2ICsx
NTg1LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNv
ZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWwKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3ltYm9sKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3Qp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDE2QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBiY2VkOTg0M2ZjZTgyNjIwZTg4Yjk3NTAxODNhZWI2MTU1NjI2MDY5Li5hYTc1
NTk3ZWQ4YzUxMmU5ZWNiZWY3NGU0NjA2NmYyNjJlZDEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0
dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7CitjbGFzcyBUZW1wb3JhbENhbGVuZGFy
OwogY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsK
IGNsYXNzIFR5cGVQcm9maWxlckxvZzsKQEAgLTU5MSw2ICs1OTIsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAppbmRleCA3NGY1Njk4ODJlNmQ0Njk0OTgzZjcxOTBhMTc3MDIxNmRhMjZjYzg3Li5kNTg0
NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5YWZlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTI4NCwxMiArMjg0LDIyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGUoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBjb25zdCBMQ2hhciogbGNoYXJDaGFyYWN0ZXJzID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpOwotICAgIEFTU0VSVChjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpKTsKLSAgICBSZWY8U3RyaW5nSW1w
bD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJuYWwobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAg
IHJlc3VsdC0+c2V0SGFzaChTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KGxjaGFyQ2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJl
dHVybiAqZW1wdHkoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJu
YWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICByZXN1bHQtPmhhc2goKTsKKyAgICByZXN1bHQt
Pm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gKmVtcHR5KCk7CisgICAgUmVmPFN0cmluZ0lt
cGw+IHJlc3VsdCA9IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNoYXJhY3RlcnMsIGxlbmd0aCk7Cisg
ICAgcmVzdWx0LT5oYXNoKCk7CiAgICAgcmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKaW5kZXggYzgxNWI5N2M3MTM1ZjhjM2MwMWQxYzE1ZDU4N2EzYTllYTkxMzMzOC4u
Y2UzMjFkZWE5OTIyNTRhNDZlMDk1NjhlZmY2Zjc5MTAzODFjMTUyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTI1OSw3ICsyNTksMTMgQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZh
dGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZlB0cjxTdHJp
bmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
VHlwZSomKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVy
cyksIGxlbmd0aCkpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChiaXR3
aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKKyAgICB9CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJp
bmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYs
CiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwu
IEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1MzIxM2Q0ZmQ5MTM0
NjEwZGU4ODkwZDQyZTlhOWIxNDc4YzMyODIuLmI3NmRiNGNlYzdkYzU1YmQzODgwMGQ1MGRhYzMw
YjA5MTVmMWRiNDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMjkgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuQ2Fs
ZW5kYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTY1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKG5ldy5UZW1wb3JhbC5DYWxlbmRhcik6
CisKIDIwMjEtMDgtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBVcGdyYWRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTkwNGM2YzI3YWFkM2U2ZTc4MTM5NzMyMzllYTc4NTNhYjNjOGJmOAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0w
LDAgKzEsOTEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3Rl
ZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBl
OworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBp
ZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3Ip
LCBtZXNzYWdlKTsKK30KKworeworICAgIGxldCBjYWxlbmRhciA9IG5ldyBUZW1wb3JhbC5DYWxl
bmRhcigiaXNvODYwMSIpOworICAgIHNob3VsZEJlKGNhbGVuZGFyLmlkLCBgaXNvODYwMWApOwor
ICAgIHNob3VsZEJlKFN0cmluZyhjYWxlbmRhciksIGBpc284NjAxYCk7Cit9Cit7CisgICAgbGV0
IGNhbGVuZGFyID0gbmV3IFRlbXBvcmFsLkNhbGVuZGFyKCJncmVnb3J5Iik7CisgICAgc2hvdWxk
QmUoY2FsZW5kYXIuaWQsIGBncmVnb3J5YCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKGNhbGVuZGFy
KSwgYGdyZWdvcnlgKTsKK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBUZW1wb3Jh
bC5DYWxlbmRhcigiZGlzY29yZGlhbiIpOworfSwgUmFuZ2VFcnJvciwgYFJhbmdlRXJyb3I6IGlu
dmFsaWQgY2FsZW5kYXIgSURgKTsKKworeworICAgIGxldCBpbnB1dCA9IFsibW9udGhDb2RlIiwg
ImRheSJdOworICAgIGxldCBmaWVsZHMgPSBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCJpc284NjAx
IikuZmllbGRzKGlucHV0KTsKKyAgICBzaG91bGRCZShpbnB1dCAhPT0gZmllbGRzLCB0cnVlKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShmaWVsZHMpLCBgWyJtb250aENvZGUiLCJkYXki
XWApOworfQoreworICAgIGxldCBpbnB1dCA9IFsibW9udGhDb2RlIiwgImRheSJdOworICAgIGxl
dCBmaWVsZHMgPSBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCJncmVnb3J5IikuZmllbGRzKGlucHV0
KTsKKyAgICBzaG91bGRCZShpbnB1dCAhPT0gZmllbGRzLCB0cnVlKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShmaWVsZHMpLCBgWyJtb250aENvZGUiLCJkYXkiXWApOworfQoreworICAg
IGxldCBpbnB1dCA9IFsibW9udGhDb2RlIiwgImRheSIsICJ5ZWFyIl07CisgICAgbGV0IGZpZWxk
cyA9IFRlbXBvcmFsLkNhbGVuZGFyLmZyb20oImlzbzg2MDEiKS5maWVsZHMoaW5wdXQpOworICAg
IHNob3VsZEJlKGlucHV0ICE9PSBmaWVsZHMsIHRydWUpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGZpZWxkcyksIGBbIm1vbnRoQ29kZSIsImRheSIsInllYXIiXWApOworfQorCit7Cisg
ICAgbGV0IGlucHV0ID0gWyJtb250aENvZGUiLCAiZGF5IiwgInllYXIiXTsKKyAgICBsZXQgZmll
bGRzID0gVGVtcG9yYWwuQ2FsZW5kYXIuZnJvbSgiZ3JlZ29yeSIpLmZpZWxkcyhpbnB1dCk7Cisg
ICAgc2hvdWxkQmUoaW5wdXQgIT09IGZpZWxkcywgdHJ1ZSk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZmllbGRzKSwgYFsibW9udGhDb2RlIiwiZGF5IiwieWVhciIsImVyYSIsImVyYVll
YXIiXWApOworfQoreworICAgIGxldCBtZXJnZWQgPSBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCdp
c284NjAxJykubWVyZ2VGaWVsZHMoCisgICAgICB7IHllYXI6IDIwMDYsIG1vbnRoOiA3LCBkYXk6
IDMxIH0sCisgICAgICB7IG1vbnRoQ29kZTogJ00wOCcgfQorICAgICk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkobWVyZ2VkKSwgYHsieWVhciI6MjAwNiwiZGF5IjozMSwibW9udGhDb2Rl
IjoiTTA4In1gKTsKK30KK3sKKyAgICBsZXQgbWVyZ2VkID0gVGVtcG9yYWwuQ2FsZW5kYXIuZnJv
bSgnZ3JlZ29yeScpLm1lcmdlRmllbGRzKAorICAgICAgeyB5ZWFyOiAyMDA2LCBtb250aDogNywg
ZGF5OiAzMSB9LAorICAgICAgeyBtb250aENvZGU6ICdNMDgnIH0KKyAgICApOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KG1lcmdlZCksIGB7InllYXIiOjIwMDYsImRheSI6MzEsIm1vbnRo
Q29kZSI6Ik0wOCJ9YCk7Cit9CisKK3sKKyAgICBjb25zdCB1c2VyID0geworICAgICAgICBpZDog
Nzc1LAorICAgICAgICB1c2VybmFtZTogJ3JvYm90Y2F0JywKKyAgICAgICAgcGFzc3dvcmQ6ICdo
dW50ZXIyJywgLy8gTm90ZTogRG9uJ3QgcmVhbGx5IHN0b3JlIHBhc3N3b3JkcyBsaWtlIHRoYXQK
KyAgICAgICAgdXNlckNhbGVuZGFyOiBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCdncmVnb3J5JykK
KyAgICB9OworICAgIGxldCBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh1c2VyKTsKKyAgICBzaG91
bGRCZShzdHJpbmcsIGB7ImlkIjo3NzUsInVzZXJuYW1lIjoicm9ib3RjYXQiLCJwYXNzd29yZCI6
Imh1bnRlcjIiLCJ1c2VyQ2FsZW5kYXIiOiJncmVnb3J5In1gKTsKKyAgICAvLyBUbyByZWJ1aWxk
IGZyb20gdGhlIHN0cmluZzoKKyAgICBmdW5jdGlvbiByZXZpdmVyKGtleSwgdmFsdWUpIHsKKyAg
ICAgICAgaWYgKGtleS5lbmRzV2l0aCgnQ2FsZW5kYXInKSkKKyAgICAgICAgICAgIHJldHVybiBU
ZW1wb3JhbC5DYWxlbmRhci5mcm9tKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IH0KKyAgICBzaG91bGRCZShKU09OLnBhcnNlKHN0cmluZywgcmV2aXZlcikudXNlckNhbGVuZGFy
IGluc3RhbmNlb2YgVGVtcG9yYWwuQ2FsZW5kYXIsIHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436761</attachid>
            <date>2021-08-30 03:00:33 -0700</date>
            <delta_ts>2021-08-30 11:56:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229651-20210830030033.patch</filename>
            <type>text/plain</type>
            <size>73551</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTBmZDBkZDM1MmRkOWJmODVhZGNmZmY5Y2IyY2VjNGFkYWI0OTRmLi5jODM5OTlmZjhjYTE2YmIy
YmM0Y2Q3Y2YxZjk3ZTRlYjE2OGFjNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMS0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIFRlbXBvcmFsLkNhbGVuZGFyJ3Mgc2ltcGxlIHBhcnQuIEN1cnJlbnRseSwgd2UgZG8gbm90
IGltcGxlbWVudCBtYW55IHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXIgc2luY2UKKyAgICAgICAg
d2UgZG8gbm90IGhhdmUgVGVtcG9yYWwgRGF0ZS1saWtlIHN0cnVjdHVyZXMgeWV0LCBidXQgdGhp
cyBwYXRjaCBpbXBsZW1lbnRlZCBjb3JlIHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXI6IGtlZXBp
bmcgY2FsZW5kYXIKKyAgICAgICAgaWRlbnRpZmllci4KKworICAgICAgICBXZSBhbHNvIGRlZmVy
IGltcGxlbWVudGluZyBUZW1wb3JhbC5DYWxlbmRhci5mcm9tJ3MgY2FsZW5kYXIgSUQgcGFyc2lu
ZyBwYXJ0IHNpbmNlIGl0IHJlcXVpcmVzIGZ1bGwtZmxlZGdlZCBJU08gODYwMSBwYXJzZXIsCisg
ICAgICAgIHdoaWNoIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKwor
ICAgICAgICBXZSB1c2UgYHVuc2lnbmVkYCBmb3IgQ2FsZW5kYXJJRCwgYW5kIHRoaXMgaWQgY29y
cmVzcG9uZHMgdG8gdGhlIGFycmF5IGluZGV4IG9mIGludGxBdmFpbGFibGVDYWxlbmRhcnMsIHdo
aWNoIHJldHVybnMgYXJyYXkKKyAgICAgICAgb2YgU3RyaW5nIGZyb20gSUNVLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OmludGxBdmFpbGFibGVDYWxlbmRhcnMpOgorICAgICAgICAo
SlNDOjppc284NjAxQ2FsZW5kYXJJRFNsb3cpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDYWxl
bmRhcnMpOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppc284
NjAxQ2FsZW5kYXJJRCk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Y2FsZW5kYXJTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIpOgorICAgICAg
ICAoSlNDOjpwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpUZW1w
b3JhbENhbGVuZGFyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6
OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgIChKU0M6OmRlZmF1bHRNZXJnZUZpZWxkcyk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVDYWxlbmRhckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMjEtMDgtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIG9wZW5GaWxlIGZ1bmN0aW9uIHRvIGpzYy5jcHAgdGhhdCBsaW5rcyB0byBmaWxl
IGJhY2tlZCBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNDNjNTBjNjM0ZTlmMTg4ZjNmNGJmZjY1NmY5MWMxYmRiZDdj
OTNmNi4uOGQ4ZTliNmJmYjZlNDdiNGExYzhhYmE4ODhjMzJlNGQ1NjA2NGE0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKToKKwogMjAyMS0wOC0yOCAgQ2FtZXJvbiBN
Y0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc2NlbGxhbmVvdXMgdHlw
byBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRlMGVhZmYxYjYy
Mzk3MWIxYmM5MzgwOThmYWI1YmJmODhhMGU4OTUuLjU5MzA2ZTVkMzhlZTYwODlmMmI1MzA1ZDUw
YjBkZjk0YzE3ZmU4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEw
Nyw2ICsxMDcsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1RlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKIAogICAgIHdhc20v
anMvSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDcxYTgwZDY3ZmQ4MzRlMGRhM2Ri
OWFlYjNkYzA3OTBjODczOGZhYy4uMTIwMjVlYTAzOWFhYjY3NTcyYzIyZDM3ZTM4MmMzMjQ4Y2Q4
YjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2OSw2ICsxNjksOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiskKFBST0pFQ1Rf
RElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRp
bmcudHh0CiAkKFBST0pFQ1RfRElSKS91Y2QvRGVyaXZlZEJpbmFyeVByb3BlcnRpZXMudHh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggOWNmZmU5YWRiZGFiNTRjZjc3NTNiZDk3YzI1ZDgxZGJjNzA1MTgyMC4u
MDE2ZGE4Zjg1Yzk5OThmYzlkMTNhNzMyMjE4YTg0MTM5ZTJjMjIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjYsNiArNjYsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvU3RyaW5nQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdQcm90b3R5cGUubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1N5bWJvbFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE9iamVjdC5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9XYXNtQjNJUkdlbmVyYXRvcklubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NTQyYzdmNzc0NjVlMjZlMTlkNGE2OGE1ZGI3
NjA5MWZkZDQ2NTM5Li5jODJjZjI2MWJhYTAzMzljZWMyZDQ5M2U0ZWRkYTI3YzA1MDdjMDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTkxLDYgKzE5
MSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0Lmgg
XAogICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTeW1ib2xQcm90b3R5cGUubHV0
LmggXAorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAog
ICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTYwMTk2ZTJjNjcwMjNjODEwZDYyZjI1MDk2ODNiODEzZjFmZjA2OC4uMjNj
YmIyOThjZWI2NGI3OGM2MDE4MWMyZTRmZWRiOWYzOTg3MWFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4NDcsNiArMTg0Nyw5IEBACiAJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdy
aXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODBBNzZCMURDRDcx
OTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJDM0M2OTIzRTk0QzFFMDBCQzk3QzAg
LyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oICovOyB9OworCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0Eg
LyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8q
IFRlbXBvcmFsQ2FsZW5kYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMkQ0REUzMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmgg
Ki87IH07CisJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLzsgfTsKIAkJRTMzMDk1REQyMzIxMEExQjAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNENC
QjUyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAv
KiBSZWdFeHBHbG9iYWxEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MDIsNiArMTkwNSw4IEBACiAJCUUzOUJG
Mzk5MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUJGMzk4MjJBMjI4OEIwMEJEMTgz
RSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDhCMkQyMzAyMUUxRTAw
MjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CisJCUUzOURBMURBMjZEQjVFNEMwMDEw
MDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8q
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi87IH07CisJCUUzOURBMURCMjZEQjVF
NTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M0NjMwNTI2REI1REU5MDA4
OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlFMzlE
QTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzOUVFQUYzMjI4MTI0NTAwMDg0NzRGNCAvKiBDYWNoZWRTcGVjaWFsUHJv
cGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAvKiBDYWNo
ZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKIAkJ
RTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0
MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi87IH07CkBAIC01MDg3LDYgKzUwOTIsMTIgQEAK
IAkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckVycm9yQ29kZS5jcHA7IHBhdGggPSB5
YXJyL1lhcnJFcnJvckNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI4
MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmg7IHBhdGggPSB5YXJyL1lhcnJFcnJvckNv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyQzNDNjgyM0U5NEMxRTAwQkM5
N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMkQ0REUwMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVu
ZGFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsQ2Fs
ZW5kYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFMTI2REFGRDQy
MDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUyMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzJENERFMzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMkQ0REU1MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVG
QjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMDIsNiArNTIxMyw4IEBACiAJCUUz
QkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1
REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0MyOTVEQzFFRDJDQkFBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M0NjMwNjI2REI1
REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9TUkVudHJ5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0M2OTRCMjIzMDI2ODc0MDA2RkJFNDIgLyogV2FzbVRpZXJVcENvdW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21UaWVyVXBDb3VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQzczQThGMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5n
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU3RyZWFt
aW5nUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDA5LDYgKzcwMjIs
OCBAQAogCQkJCTk5NkI3MzExMUJEOUZBMkMwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5s
dXQuaCAqLywKIAkJCQk5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0
b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMz
NiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5
M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFE
QzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAt
Nzk1Myw2ICs3OTY4LDEyIEBACiAJCQkJRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmggKi8sCiAJCQkJQkRCNEI1RTA5OUNENEMxQkIzQzFDRjA1IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovLAorCQkJCUUzMkQ0REUwMjZE
QUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmNwcCAqLywKKwkJCQlFMzJENERFMzI2
REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovLAorCQkJCUUzMkQ0REU1MjZE
QUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlFMzJENERFMjI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyog
VGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1w
b3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9i
amVjdC5jcHAgKi8sCkBAIC0xMDY0OSw2ICsxMDY3MCwxMSBAQAogCQkJCUE3ODRBMjY0MTFEMTY2
MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzc5OTc4
MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAv
KiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURB
MURCMjZEQjVFNTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxD
YWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5REExREEyNkRCNUU0QzAw
MTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDUyYjkzZWU4ZDhiYmE2NjA2NGRiMjAxOGYzZjMxNzcwMmY3NmFhOWMuLjFlM2Fl
ZjQ1NTNkOTRhYmQ2YWY2ZDNkMjVkZjQxMzliMzA0ZDQ1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTEwMDksNiArMTAwOSw5IEBAIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAog
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogcnVu
dGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXIuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBy
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCAzM2UyYzdlMTJiYzNkODdiM2I1OGY4YWVlOTI1Mjc2OWY4YjY5NTljLi4xNDFkNWM0MGI3
YTUwZTI1Y2U0ZjVkMGYyNmJiNmJiNjQyODRkNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTExMCw2ICsxMTAsNyBAQAog
ICAgIG1hY3JvKGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhl
cmEpIFwKKyAgICBtYWNybyhlcmFZZWFyKSBcCiAgICAgbWFjcm8oZXJyb3JzKSBcCiAgICAgbWFj
cm8oZXZhbCkgXAogICAgIG1hY3JvKGV2ZW50cykgXApAQCAtMTY5LDYgKzE3MCw3IEBACiAgICAg
bWFjcm8obWluaW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAgbWFjcm8obWludXRlKSBcCiAg
ICAgbWFjcm8obW9udGgpIFwKKyAgICBtYWNybyhtb250aENvZGUpIFwKICAgICBtYWNybyhtdWx0
aWxpbmUpIFwKICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obmV4dCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA3ZjE2M2M2MGZkMDhi
M2U0ZjhjNTZjNDBlZWFmZWUwZDkxYzIxOTE1Li5jMTJiMzNiZmQyMTUxMjA2YTg1N2U0N2MxMDg3
ODdiMzY2NDE1YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcApAQCAtMTU3NCw0OSArMTU3NCw3MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9jYWxlQXJyYXkpOwogfQogCi0vLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJsZWNhbGVuZGFy
cwotc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMo
KQogewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gYXZhaWxhYmxlQ2FsZW5kYXJzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
WyZdIHsKKyAgICAgICAgYXZhaWxhYmxlQ2FsZW5kYXJzLmNvbnN0cnVjdCgpOworICAgICAgICBB
U1NFUlQoYXZhaWxhYmxlQ2FsZW5kYXJzLT5pc0VtcHR5KCkpOwogCi0gICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVl
X3B0cjxVRW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX2dldEtleXdv
cmRWYWx1ZXNGb3JMb2NhbGUoImNhbGVuZGFycyIsICJ1bmQiLCBmYWxzZSwgJnN0YXR1cykpOwot
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJz
Il9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlx
dWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5
d29yZFZhbHVlc0ZvckxvY2FsZSgiY2FsZW5kYXJzIiwgInVuZCIsIGZhbHNlLCAmc3RhdHVzKSk7
CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAKLSAgICBpbnQzMl90IGNvdW50
ID0gdWVudW1fY291bnQoZW51bWVyYXRpb24uZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJzIl9zKTsKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3Vu
dChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Mo
c3RhdHVzKSk7CisgICAgICAgIGF2YWlsYWJsZUNhbGVuZGFycy0+cmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb3VudCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKLSAgICBlbGVt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLSAgICBmb3IgKGludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIGludDMyX3QgbGVuZ3Ro
ID0gMDsKLSAgICAgICAgY29uc3QgY2hhciogcG9pbnRlciA9IHVlbnVtX25leHQoZW51bWVyYXRp
b24uZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byBjcmVhdGVJbW1vcnRhbFRocmVhZFNhZmVTdHJpbmcg
PSBbJl0oU3RyaW5nJiYgc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJ
bXBsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50
MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51
bV9uZXh0KGVudW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgICAg
IEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgICAgICBTdHJpbmcgY2FsZW5kYXIo
cG9pbnRlciwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG1hcHBlZCA9IG1hcElDVUNh
bGVuZGFyS2V5d29yZFRvQkNQNDcoY2FsZW5kYXIpKQorICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhXVEZNb3Zl
KG1hcHBlZC52YWx1ZSgpKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF2
YWlsYWJsZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhX
VEZNb3ZlKGNhbGVuZGFyKSkpOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBjYWxlbmRhcihw
b2ludGVyLCBsZW5ndGgpOwotICAgICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRh
cktleXdvcmRUb0JDUDQ3KGNhbGVuZGFyKSkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChX
VEZNb3ZlKG1hcHBlZC52YWx1ZSgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1l
bnRzLmFwcGVuZChXVEZNb3ZlKGNhbGVuZGFyKSk7Ci0gICAgfQogCi0gICAgLy8gVGhlIEF2YWls
YWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBhIExpc3QsIG9yZGVyZWQg
YXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKLSAgICAvLyB2YWx1ZXMgaGFkIGJlZW4gc29ydGVk
IHVzaW5nICVBcnJheS5wcm90b3R5cGUuc29ydCUgdXNpbmcgdW5kZWZpbmVkIGFzIGNvbXBhcmVm
bgotICAgIHN0ZDo6c29ydChlbGVtZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwKLSAgICAg
ICAgW10oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoYSwgYikgPCAwOwotICAgICAgICB9KTsKKyAgICAg
ICAgLy8gVGhlIEF2YWlsYWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBh
IExpc3QsIG9yZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKKyAgICAgICAgLy8gdmFs
dWVzIGhhZCBiZWVuIHNvcnRlZCB1c2luZyAlQXJyYXkucHJvdG90eXBlLnNvcnQlIHVzaW5nIHVu
ZGVmaW5lZCBhcyBjb21wYXJlZm4KKyAgICAgICAgc3RkOjpzb3J0KGF2YWlsYWJsZUNhbGVuZGFy
cy0+YmVnaW4oKSwgYXZhaWxhYmxlQ2FsZW5kYXJzLT5lbmQoKSwKKyAgICAgICAgICAgIFtdKGNv
bnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6Y29kZVBvaW50Q29tcGFyZShhLCBiKSA8IDA7CisgICAgICAgICAgICB9KTsKKyAgICB9
KTsKKyAgICByZXR1cm4gYXZhaWxhYmxlQ2FsZW5kYXJzOworfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGVsZW1lbnRzKSkpOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5kYXJJRFN0b3JhZ2Ug
eyBzdGQ6Om51bWVyaWNfbGltaXRzPENhbGVuZGFySUQ+OjptYXgoKSB9OworQ2FsZW5kYXJJRCBp
c284NjAxQ2FsZW5kYXJJRFNsb3coKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0
aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAg
ICAgICAgY29uc3QgYXV0byYgY2FsZW5kYXJzID0gaW50bEF2YWlsYWJsZUNhbGVuZGFycygpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXJzW2luZGV4XSA9PSAiaXNvODYw
MSJfcykgeworICAgICAgICAgICAgICAgIGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZSA9IGluZGV4
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworICAgIHJldHVybiBp
c284NjAxQ2FsZW5kYXJJRFN0b3JhZ2U7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY2FsZW5kYXJzCitzdGF0aWMgSlNBcnJh
eSogYXZhaWxhYmxlQ2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIGludGxB
dmFpbGFibGVDYWxlbmRhcnMoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1p
bnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY29sbGF0aW9ucwpAQCAtMTg2NCwyMSArMTg4
NSw0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZh
bHVlc09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSlNB
cnJheSogY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZlY3RvcjxTdHJpbmcsIDE+JiYgZWxlbWVudHMpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQ29udGlndW91cyksIGVsZW1lbnRzLnNpemUoKSk7Ci0gICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgZWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIFdURk1vdmUoZWxl
bWVudHNbaW5kZXhdKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBkYzY5NmQ2NWZh
NWM2MzYzMjJhNmM1MTRmOGIwMDc4NGRlZjJmYzZiLi5mMjEzN2RlMzVlOTNhNTFlNWM4NTUyZGE2
YWRmODliNDU5ZDUwOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCkBAIC0xMDEsNiArMTAxLDE5IEBAIGlubGluZSBjb25zdCBMb2NhbGVTZXQmIGludGxQ
bHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlCiBpbmxp
bmUgY29uc3QgTG9jYWxlU2V0JiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBMb2Nh
bGVTZXQmIGludGxMaXN0Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFp
bGFibGVMb2NhbGVzKCk7IH0KIAordXNpbmcgQ2FsZW5kYXJJRCA9IHVuc2lnbmVkOworY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKworZXh0ZXJuIENhbGVu
ZGFySUQgaXNvODYwMUNhbGVuZGFySURTdG9yYWdlOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5k
YXJJRFNsb3coKTsKK2lubGluZSBDYWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEKCkKK3sKKyAg
ICB1bnNpZ25lZCB2YWx1ZSA9IGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZTsKKyAgICBpZiAodmFs
dWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxDYWxlbmRhcklEPjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBpc284NjAxQ2FsZW5kYXJJRFNsb3coKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRy
aVN0YXRlIGludGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlv
bnMsIFByb3BlcnR5TmFtZSk7CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciog
ZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVk
IG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKQEAgLTE0OCw2ICsxNjEsNCBAQCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbWFwSUNVQ29sbGF0aW9uS2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5n
Jik7CiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyhj
b25zdCBTdHJpbmcmKTsKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBCQ1A0N1RvSUNVQ2FsZW5k
YXJLZXl3b3JkKGNvbnN0IFN0cmluZyYpOwogCi1KU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJp
bmdWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBWZWN0b3I8U3RyaW5nLCAxPiYmKTsKLQogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAppbmRleCBkOGIwYWJhNjI3MjRlYjU1ZmJlNWFmZDc2NTdlNGNhNTUyYTFi
NGJiLi5kNDEwMjQ5NTMwZTA0YmUwZmU0ODI2NmJmNGJkYTc0NzVhMDBmMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTIy
NSw0ICsyMjUsMjIgQEAgaW5saW5lIEpTT2JqZWN0KiBpbnRsQ29lcmNlT3B0aW9uc1RvT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICByZXR1cm4gb3B0aW9u
czsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPgorSlNBcnJheSogY3JlYXRlQXJy
YXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENv
bnRhaW5lciYgZWxlbWVudHMpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyks
IGVsZW1lbnRzLnNpemUoKSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIGVsZW1lbnRzW2luZGV4XSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNWY1YjA2NGVjYmZjNjU4YTk5MGQyZWI1
OTYzNWJmMmJkYmU4ODgyLi5kNDU2N2VmZTkwMjZjOWE2NDc1ZWQ0NWFiZWEyYWVjNmM3NDg2NDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0yMDEsNiArMjAxLDkgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgog
I2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKQEAgLTEyMTIsNiArMTIxNSwxMyBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVGVtcG9yYWwo
KSkgeworICAgICAgICBtX2NhbGVuZGFyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUq
IGNhbGVuZGFyUHJvdG90eXBlID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGNhbGVuZGFyUHJvdG90eXBlKSk7Cisg
ICAgICAgICAgICB9KTsKKwogICAgICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1w
b3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CkBAIC0yMDkwLDYgKzIxMDAsOCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKIAorICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CisKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0
ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVy
RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlclN0
cmljdEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDE3NWI4YjZiOTE0MzZiNjkzZmZkMzFkZmJjNjc4N2E0MTU0NmQ4OWYu
LjEyNDY1OGYyNDUyZTBjNWFkMGZkZWViMTRlOTBiZTYzODk4ZGIzMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI0LDYgKzMyNCw4
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOwog
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKIAorICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJl
OworCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVy
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0
dGVyU3RyaWN0RnVuY3Rpb247CkBAIC04NzAsNiArODcyLDggQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNPYmplY3QqIG51
bWJlckZvcm1hdENvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
Y29uc3RydWN0b3IodGhpcyk7IH0KICAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0UHJvdG90eXBl
KCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAK
KyAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRhclN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2UzNWVhNjMy
YTVhNTkwN2FlNDE5MDcwNzQ0YmExNGRiNzE5MWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsQ2FsZW5kYXI6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxDYWxlbmRhcikgfTsKKworbmFt
ZXNwYWNlIFRlbXBvcmFsQ2FsZW5kYXJJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQorCitUZW1wb3JhbENhbGVuZGFyKiBUZW1wb3JhbENhbGVuZGFy
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKQoreworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFyKHZt
LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxDYWxlbmRhcjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhbGVuZGFySUQgaWRlbnRpZmllcikKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IFRlbXBvcmFsQ2FsZW5kYXI6OmlzQnVpbHRpbkNh
bGVuZGFyKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIGNhbGVuZGFycyA9
IGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChjYWxlbmRh
cnNbaW5kZXhdID09IHN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbGNhbGVuZGFyc3RyaW5nCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldykKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHBhcnNpbmcgdGVtcG9yYWwgY2FsZW5kYXIgc3RyaW5nLCB3aGljaCByZXF1
aXJlcyBmdWxsIElTTyA4NjAxIHBhcnNlci4KKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGNhbGVuZGFyCitKU09iamVjdCog
VGVtcG9yYWxDYWxlbmRhcjo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNhbGVuZGFyTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGNhbGVu
ZGFyTGlrZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBjYWxlbmRhckxpa2VPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxlbmRhckxpa2UpOworCisgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGltcGxlbWVudCBjb2RlIHJldHJpZXZpbmcgQ2FsZW5kYXIgZnJvbSBUZW1w
b3JhbCBEYXRlIExpa2Ugb2JqZWN0cy4gQnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB0aGV5IGFy
ZSBub3QgaW1wbGVtZW50ZWQgeWV0LgorCisgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxl
bmRhckxpa2VPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09i
amVjdCo+KGNhbGVuZGFyTGlrZSk7CisKKyAgICAgICAgY2FsZW5kYXJMaWtlID0gY2FsZW5kYXJM
aWtlT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7
CisgICAgICAgIGlmIChjYWxlbmRhckxpa2UuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGVuZGFyTGlrZSktPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIGlmICghaGFz
UHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNhbGVu
ZGFyTGlrZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjYWxl
bmRhckxpa2UudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBjYWxlbmRh
cklkID0gaXNCdWlsdGluQ2FsZW5kYXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFjYWxlbmRhcklk
KSB7CisgICAgICAgIGNhbGVuZGFySWQgPSBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcoZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICB9CisKKyAgICBBU1NFUlQoY2FsZW5kYXJJZCk7CisgICAgcmV0dXJuIFRl
bXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVy
ZSgpLCBjYWxlbmRhcklkLnZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYTExNGU2ZDQ3YzQyZGY2NjkwNmFjY2FiOTI5NTU5ZDVlMmE0MmQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVGVtcG9yYWxDYWxlbmRhciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHZtLnRlbXBvcmFsQ2FsZW5kYXJTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBU
ZW1wb3JhbENhbGVuZGFyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBDYWxlbmRhcklEKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc0lTTzg2MDEo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIgPT0gaXNvODYwMUNhbGVuZGFySUQoKTsgfQor
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gaXNCdWlsdGluQ2FsZW5kYXIo
U3RyaW5nVmlldyk7CisKKyAgICBzdGF0aWMgSlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbENhbGVuZGFyKFZNJiwgU3RydWN0
dXJlKiwgQ2FsZW5kYXJJRCk7CisKKyAgICBDYWxlbmRhcklEIG1faWRlbnRpZmllciB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yRnVuY0Zyb20pOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZ0ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3JU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gdGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yVGFibGUKKyAgICBmcm9tICAg
ICAgICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1
Y3RvciogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSkKK3sKKyAgICBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50
ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhcik7CisK
K1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbENhbGVuZGFyLCBjb25zdHJ1Y3RUZW1wb3JhbENhbGVu
ZGFyKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIi
X3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9y
YWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1Rhcmdl
dCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgY2FsZW5kYXJTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBjYWxlbmRhclN0cmluZyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBpZGVu
dGlmaWVyID0gVGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIoY2FsZW5kYXJTdHJp
bmcpOworICAgIGlmICghaWRlbnRpZmllcikgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxl
bmRhcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxlbmRhciIpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxlbmRhcjo6
ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOTc3NTBhZDli
ZTc3NGNhNDAxOTE2OWU1ZDE5NTE0YTg1NWQ2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IgZmluYWwg
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IElu
dGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKwor
ICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZmM3
NDFhZTU4ZGYxYmEyZTA4Yzk0N2M2OGFmMjdhOTc3NjhiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKKyNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGVGdW5jRmllbGRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VGaWVsZHMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb1N0cmluZyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlR2V0dGVySWQpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLkNhbGVu
ZGFyIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiB0
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlVGFibGUKKyAgICBmaWVsZHMgICAgICAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIG1lcmdlRmllbGRzICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmll
bGRzICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgdG9TdHJpbmcgICAgICAgIHRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgICB0
b0pTT04gICAgICAgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb0pTT04gICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAorICAgIGlkICAgICAgICAgICAgICB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlR2V0dGVySWQgICAgICAgICBSZWFkT25seXxEb250RW51bXxDdXN0b21BY2Nlc3Nv
cgorQGVuZAorKi8KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6VGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy1nZXQtdGVtcG9yYWwuY2FsZW5kYXIucHJvdG90eXBl
LmlkCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUdl
dHRlcklkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KSk7Cit9CisKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFy
LnByb3RvdHlwZS5maWVsZHMKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlRnVuY0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
Y2FsZW5kYXIgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYWxlbmRhcikKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3Rv
dHlwZS5maWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgQ2FsZW5kYXIiX3MpOworCisgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+
aXNJU084NjAxKCk7CisgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7Cisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZmllbGROYW1lczsKKyAgICBmb3JFYWNoSW5JdGVyYWJs
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91
bGRBZGRFcmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGlu
Y2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFpc0lTTzg2MDEgJiYgIXNob3VsZEFkZEVyYUFuZEVyYVllYXIpIHsK
KyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1
ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJpbmcgPT0gInllYXIiX3MpCisgICAgICAgICAg
ICAgICAgc2hvdWxkQWRkRXJhQW5kRXJhWWVhciA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
ZmllbGROYW1lcy5hcHBlbmQodmFsdWUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoc2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgeworICAg
ICAgICBmaWVsZE5hbWVzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmVyYS5pbXBsKCkpKTsKKyAgICAgICAgZmllbGROYW1lcy5hcHBlbmQoanNOb250cml2
aWFsU3RyaW5nKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmFZZWFyLmltcGwoKSkpOworICAgIH0K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGZpZWxkTmFt
ZXMpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtZGVmYXVsdG1lcmdlZmllbGRzCitzdGF0aWMgSlNPYmplY3QqIGRlZmF1bHRNZXJnZUZp
ZWxkcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZmllbGRzLCBKU09i
amVjdCogYWRkaXRpb25hbEZpZWxkcykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogbWVyZ2VkID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKworICAgIHsK
KyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb3JpZ2luYWxLZXlzKHZtLCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CisgICAgICAgIGZpZWxk
cy0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZpZWxkcywgZ2xvYmFsT2Jq
ZWN0LCBvcmlnaW5hbEtleXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgbmV4dEtleSA6IG9yaWdpbmFsS2V5cykgeworICAgICAgICAgICAgaWYgKG5leHRL
ZXkgIT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGggJiYgbmV4dEtleSAhPSB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3BWYWx1ZSA9IGZp
ZWxkcy0+Z2V0KGdsb2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3BWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlZC0+cHV0T3duRGF0
YVByb3BlcnR5KHZtLCBuZXh0S2V5LCBwcm9wVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaW5jbHVkZXNNb250
aE9yTW9udGhDb2RlID0gZmFsc2U7CisgICAgeworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBu
ZXdLZXlzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6
RXhjbHVkZSk7CisgICAgICAgIGFkZGl0aW9uYWxGaWVsZHMtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhZGRpdGlvbmFsRmllbGRzLCBnbG9iYWxPYmplY3QsIG5ld0tleXMs
IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbmV4dEtleSA6
IG5ld0tleXMpIHsKKyAgICAgICAgICAgIGlmICghaW5jbHVkZXNNb250aE9yTW9udGhDb2RlKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5leHRLZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGgg
fHwgbmV4dEtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aENvZGUpCisgICAgICAgICAgICAg
ICAgICAgIGluY2x1ZGVzTW9udGhPck1vbnRoQ29kZSA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkcy0+Z2V0KGds
b2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG1lcmdlZCwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIG5leHRLZXksIHByb3BW
YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaW5jbHVk
ZXNNb250aE9yTW9udGhDb2RlKSB7CisgICAgICAgIEpTVmFsdWUgbW9udGggPSBmaWVsZHMtPmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFtb250aC5pc1VuZGVmaW5l
ZCgpKSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChtZXJnZWQsIHRydWUpOwor
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1vbnRoLCBtb250aCwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBtb250aENvZGUgPSBm
aWVsZHMtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghbW9u
dGhDb2RlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBtZXJnZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bW9udGhDb2RlLCBtb250aENvZGUsIHNsb3QpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBtZXJnZWQ7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFyLnByb3RvdHlwZS5tZXJnZWZpZWxkcworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VG
aWVsZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGNhbGVuZGFyID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghY2FsZW5kYXIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUubWVyZ2VGaWVsZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ2Fs
ZW5kYXIiX3MpOworCisgICAgYXV0byogZmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvKiBhZGRpdGlvbmFsRmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBpZiAoY2FsZW5kYXItPmlzSVNPODYwMSgpKQorICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZhdWx0TWVyZ2VGaWVsZHMoZ2xv
YmFsT2JqZWN0LCBmaWVsZHMsIGFkZGl0aW9uYWxGaWVsZHMpKSk7CisKKyAgICBhdXRvIGNvcHlP
YmplY3QgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0
KSAtPiBKU09iamVjdCogeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBh
dXRvKiBjb3BpZWQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworCisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IGtleXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3Ms
IFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBnbG9iYWxPYmplY3QsIGtleXMsIERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgSlNWYWx1ZSBwcm9wVmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvcGllZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
Y29waWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvcGllZDsKKyAgICB9OworCisgICAg
YXV0byogZmllbGRzQ29waWVkID0gY29weU9iamVjdChnbG9iYWxPYmplY3QsIGZpZWxkcyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIGFkZGl0aW9u
YWxGaWVsZHNDb3BpZWQgPSBjb3B5T2JqZWN0KGdsb2JhbE9iamVjdCwgYWRkaXRpb25hbEZpZWxk
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
bmV3TW9udGggPSBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgbmV3TW9udGhDb2RlID0ganNV
bmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld1llYXIgPSBqc1VuZGVmaW5lZCgpOworICAgIEpT
VmFsdWUgbmV3RXJhID0ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld0VyYVllYXIgPSBq
c1VuZGVmaW5lZCgpOworICAgIHsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkga2V5cyh2bSwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwor
ICAgICAgICBhZGRpdGlvbmFsRmllbGRzQ29waWVkLT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMoYWRkaXRpb25hbEZpZWxkc0NvcGllZCwgZ2xvYmFsT2JqZWN0LCBrZXlzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IGtleXMp
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkc0NvcGll
ZC0+Z2V0KGdsb2JhbE9iamVjdCwga2V5KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXByb3BWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCkK
KyAgICAgICAgICAgICAgICAgICAgbmV3TW9udGggPSBwcm9wVmFsdWU7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoa2V5ID09IHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSkKKyAgICAgICAg
ICAgICAgICAgICAgbmV3TW9udGhDb2RlID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyKQorICAgICAgICAgICAgICAgICAg
ICBuZXdZZWFyID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5lcmEpCisgICAgICAgICAgICAgICAgICAgIG5ld0VyYSA9IHByb3BW
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+
ZXJhWWVhcikKKyAgICAgICAgICAgICAgICAgICAgbmV3RXJhWWVhciA9IHByb3BWYWx1ZTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzQ29w
aWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAgICAg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5l
d01vbnRoLmlzVW5kZWZpbmVkKCkgfHwgIW5ld01vbnRoQ29kZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwg
dHJ1ZSk7CisgICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bW9udGgsIG5ld01vbnRoLCBzbG90KTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAg
ICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUsIG5ld01vbnRoQ29kZSwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFu
ZXdZZWFyLmlzVW5kZWZpbmVkKCkgfHwgIW5ld0VyYS5pc1VuZGVmaW5lZCgpIHx8ICFuZXdFcmFZ
ZWFyLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+
cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBuZXdZZWFyLCBz
bG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRz
Q29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3Bl
cnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmEsIG5ld0VyYSwgc2xvdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgICAgIHsK
KyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZXJhWWVhciwgbmV3RXJhWWVhciwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShmaWVsZHNDb3BpZWQpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUudG9zdHJp
bmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVu
Y1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBjYWxlbmRhciA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWNhbGVuZGFyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENh
bGVuZGFyIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
dGxBdmFpbGFibGVDYWxlbmRhcnMoKVtjYWxlbmRhci0+aWRlbnRpZmllcigpXSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRh
ci5wcm90b3R5cGUudG9qc29uCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzVmODQ4MGQ4YzM0ZjIw
MWM0N2NiOGVhMWJlNDJmNjRkZDZlN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0K
KworICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZShWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggYWYxNDM2NzVmMWU0YzYyODdlYTJiZTE4ZjQz
M2VlYmUzNzJhNzE3ZC4uOGY0ODIyYjc2NDRjNGE4NDFhZDA2M2Y2MDZmMGYzM2M3ODJjMzNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDE2ICsyMSwy
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAK
KyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbE9iamVjdCk7CiAK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVj
dCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2Fz
dDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgp
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0
PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTQ1LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIC8qIFNvdXJjZSBmb3IgVGVtcG9yYWxPYmplY3QubHV0LmgKIEBiZWdpbiB0ZW1wb3Jh
bE9iamVjdFRhYmxlCisgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3Ig
ICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVO
b3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQK
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWRlYTZhMTNjYjRjNDI5
YjliMDcxOThiYWI2YzQ0ZjMxNDY5ZDA2OC4uMzA5M2UxMTU1YjZkZmRjYWY1N2YwZDUwZGRjNzgy
ZmJkMTVjOWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTYyLDYg
KzE2Miw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTU4NCw2ICsx
NTg1LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNv
ZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWwKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3ltYm9sKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3Qp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDE2QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBiY2VkOTg0M2ZjZTgyNjIwZTg4Yjk3NTAxODNhZWI2MTU1NjI2MDY5Li5hYTc1
NTk3ZWQ4YzUxMmU5ZWNiZWY3NGU0NjA2NmYyNjJlZDEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0
dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7CitjbGFzcyBUZW1wb3JhbENhbGVuZGFy
OwogY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsK
IGNsYXNzIFR5cGVQcm9maWxlckxvZzsKQEAgLTU5MSw2ICs1OTIsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAppbmRleCA3NGY1Njk4ODJlNmQ0Njk0OTgzZjcxOTBhMTc3MDIxNmRhMjZjYzg3Li5kNTg0
NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5YWZlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTI4NCwxMiArMjg0LDIyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGUoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBjb25zdCBMQ2hhciogbGNoYXJDaGFyYWN0ZXJzID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpOwotICAgIEFTU0VSVChjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpKTsKLSAgICBSZWY8U3RyaW5nSW1w
bD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJuYWwobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAg
IHJlc3VsdC0+c2V0SGFzaChTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KGxjaGFyQ2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJl
dHVybiAqZW1wdHkoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJu
YWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICByZXN1bHQtPmhhc2goKTsKKyAgICByZXN1bHQt
Pm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gKmVtcHR5KCk7CisgICAgUmVmPFN0cmluZ0lt
cGw+IHJlc3VsdCA9IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNoYXJhY3RlcnMsIGxlbmd0aCk7Cisg
ICAgcmVzdWx0LT5oYXNoKCk7CiAgICAgcmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKaW5kZXggYzgxNWI5N2M3MTM1ZjhjM2MwMWQxYzE1ZDU4N2EzYTllYTkxMzMzOC4u
Y2UzMjFkZWE5OTIyNTRhNDZlMDk1NjhlZmY2Zjc5MTAzODFjMTUyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTI1OSw3ICsyNTksMTMgQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZh
dGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZlB0cjxTdHJp
bmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
VHlwZSomKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVy
cyksIGxlbmd0aCkpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChiaXR3
aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKKyAgICB9CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJp
bmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYs
CiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwu
IEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1MzIxM2Q0ZmQ5MTM0
NjEwZGU4ODkwZDQyZTlhOWIxNDc4YzMyODIuLmE4NDc1MDBkMWI5YzIwNTYxNTM4MDgxZGU2ZTY0
NjkyNmMyYzBhZjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMzAgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuQ2Fs
ZW5kYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTY1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKG5ldy5UZW1wb3JhbC5DYWxlbmRhcik6
CisKIDIwMjEtMDgtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBVcGdyYWRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWZmMjUxMjM3NDU2OWQwOGIyZDMwNTMxMmU4NTNmNjhiYmYyNDRlYwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0w
LDAgKzEsOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygidXNlVGVtcG9yYWw9MSIpCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBl
LCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAo
IShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVm
aW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7Cit9CisKK3sK
KyAgICBsZXQgY2FsZW5kYXIgPSBuZXcgVGVtcG9yYWwuQ2FsZW5kYXIoImlzbzg2MDEiKTsKKyAg
ICBzaG91bGRCZShjYWxlbmRhci5pZCwgYGlzbzg2MDFgKTsKKyAgICBzaG91bGRCZShTdHJpbmco
Y2FsZW5kYXIpLCBgaXNvODYwMWApOworfQoreworICAgIGxldCBjYWxlbmRhciA9IG5ldyBUZW1w
b3JhbC5DYWxlbmRhcigiZ3JlZ29yeSIpOworICAgIHNob3VsZEJlKGNhbGVuZGFyLmlkLCBgZ3Jl
Z29yeWApOworICAgIHNob3VsZEJlKFN0cmluZyhjYWxlbmRhciksIGBncmVnb3J5YCk7Cit9CisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgVGVtcG9yYWwuQ2FsZW5kYXIoImRpc2NvcmRp
YW4iKTsKK30sIFJhbmdlRXJyb3IsIGBSYW5nZUVycm9yOiBpbnZhbGlkIGNhbGVuZGFyIElEYCk7
CisKK3sKKyAgICBsZXQgaW5wdXQgPSBbIm1vbnRoQ29kZSIsICJkYXkiXTsKKyAgICBsZXQgZmll
bGRzID0gVGVtcG9yYWwuQ2FsZW5kYXIuZnJvbSgiaXNvODYwMSIpLmZpZWxkcyhpbnB1dCk7Cisg
ICAgc2hvdWxkQmUoaW5wdXQgIT09IGZpZWxkcywgdHJ1ZSk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZmllbGRzKSwgYFsibW9udGhDb2RlIiwiZGF5Il1gKTsKK30KK3sKKyAgICBsZXQg
aW5wdXQgPSBbIm1vbnRoQ29kZSIsICJkYXkiXTsKKyAgICBsZXQgZmllbGRzID0gVGVtcG9yYWwu
Q2FsZW5kYXIuZnJvbSgiZ3JlZ29yeSIpLmZpZWxkcyhpbnB1dCk7CisgICAgc2hvdWxkQmUoaW5w
dXQgIT09IGZpZWxkcywgdHJ1ZSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZmllbGRz
KSwgYFsibW9udGhDb2RlIiwiZGF5Il1gKTsKK30KK3sKKyAgICBsZXQgaW5wdXQgPSBbIm1vbnRo
Q29kZSIsICJkYXkiLCAieWVhciJdOworICAgIGxldCBmaWVsZHMgPSBUZW1wb3JhbC5DYWxlbmRh
ci5mcm9tKCJpc284NjAxIikuZmllbGRzKGlucHV0KTsKKyAgICBzaG91bGRCZShpbnB1dCAhPT0g
ZmllbGRzLCB0cnVlKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShmaWVsZHMpLCBgWyJt
b250aENvZGUiLCJkYXkiLCJ5ZWFyIl1gKTsKK30KKworeworICAgIGxldCBpbnB1dCA9IFsibW9u
dGhDb2RlIiwgImRheSIsICJ5ZWFyIl07CisgICAgbGV0IGZpZWxkcyA9IFRlbXBvcmFsLkNhbGVu
ZGFyLmZyb20oImdyZWdvcnkiKS5maWVsZHMoaW5wdXQpOworICAgIHNob3VsZEJlKGlucHV0ICE9
PSBmaWVsZHMsIHRydWUpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGZpZWxkcyksIGBb
Im1vbnRoQ29kZSIsImRheSIsInllYXIiLCJlcmEiLCJlcmFZZWFyIl1gKTsKK30KK3sKKyAgICBs
ZXQgbWVyZ2VkID0gVGVtcG9yYWwuQ2FsZW5kYXIuZnJvbSgnaXNvODYwMScpLm1lcmdlRmllbGRz
KAorICAgICAgeyB5ZWFyOiAyMDA2LCBtb250aDogNywgZGF5OiAzMSB9LAorICAgICAgeyBtb250
aENvZGU6ICdNMDgnIH0KKyAgICApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG1lcmdl
ZCksIGB7InllYXIiOjIwMDYsImRheSI6MzEsIm1vbnRoQ29kZSI6Ik0wOCJ9YCk7Cit9Cit7Cisg
ICAgbGV0IG1lcmdlZCA9IFRlbXBvcmFsLkNhbGVuZGFyLmZyb20oJ2dyZWdvcnknKS5tZXJnZUZp
ZWxkcygKKyAgICAgIHsgeWVhcjogMjAwNiwgbW9udGg6IDcsIGRheTogMzEgfSwKKyAgICAgIHsg
bW9udGhDb2RlOiAnTTA4JyB9CisgICAgKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSht
ZXJnZWQpLCBgeyJ5ZWFyIjoyMDA2LCJkYXkiOjMxLCJtb250aENvZGUiOiJNMDgifWApOworfQor
Cit7CisgICAgY29uc3QgdXNlciA9IHsKKyAgICAgICAgaWQ6IDc3NSwKKyAgICAgICAgdXNlcm5h
bWU6ICdyb2JvdGNhdCcsCisgICAgICAgIHBhc3N3b3JkOiAnaHVudGVyMicsIC8vIE5vdGU6IERv
bid0IHJlYWxseSBzdG9yZSBwYXNzd29yZHMgbGlrZSB0aGF0CisgICAgICAgIHVzZXJDYWxlbmRh
cjogVGVtcG9yYWwuQ2FsZW5kYXIuZnJvbSgnZ3JlZ29yeScpCisgICAgfTsKKyAgICBsZXQgc3Ry
aW5nID0gSlNPTi5zdHJpbmdpZnkodXNlcik7CisgICAgc2hvdWxkQmUoc3RyaW5nLCBgeyJpZCI6
Nzc1LCJ1c2VybmFtZSI6InJvYm90Y2F0IiwicGFzc3dvcmQiOiJodW50ZXIyIiwidXNlckNhbGVu
ZGFyIjoiZ3JlZ29yeSJ9YCk7CisgICAgLy8gVG8gcmVidWlsZCBmcm9tIHRoZSBzdHJpbmc6Cisg
ICAgZnVuY3Rpb24gcmV2aXZlcihrZXksIHZhbHVlKSB7CisgICAgICAgIGlmIChrZXkuZW5kc1dp
dGgoJ0NhbGVuZGFyJykpCisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYWwuQ2FsZW5kYXIuZnJv
bSh2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgc2hvdWxkQmUoSlNP
Ti5wYXJzZShzdHJpbmcsIHJldml2ZXIpLnVzZXJDYWxlbmRhciBpbnN0YW5jZW9mIFRlbXBvcmFs
LkNhbGVuZGFyLCB0cnVlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436799</attachid>
            <date>2021-08-30 11:56:14 -0700</date>
            <delta_ts>2021-08-30 18:04:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229651-20210830115613.patch</filename>
            <type>text/plain</type>
            <size>73553</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTBmZDBkZDM1MmRkOWJmODVhZGNmZmY5Y2IyY2VjNGFkYWI0OTRmLi5jODM5OTlmZjhjYTE2YmIy
YmM0Y2Q3Y2YxZjk3ZTRlYjE2OGFjNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMS0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIFRlbXBvcmFsLkNhbGVuZGFyJ3Mgc2ltcGxlIHBhcnQuIEN1cnJlbnRseSwgd2UgZG8gbm90
IGltcGxlbWVudCBtYW55IHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXIgc2luY2UKKyAgICAgICAg
d2UgZG8gbm90IGhhdmUgVGVtcG9yYWwgRGF0ZS1saWtlIHN0cnVjdHVyZXMgeWV0LCBidXQgdGhp
cyBwYXRjaCBpbXBsZW1lbnRlZCBjb3JlIHBhcnQgb2YgVGVtcG9yYWwuQ2FsZW5kYXI6IGtlZXBp
bmcgY2FsZW5kYXIKKyAgICAgICAgaWRlbnRpZmllci4KKworICAgICAgICBXZSBhbHNvIGRlZmVy
IGltcGxlbWVudGluZyBUZW1wb3JhbC5DYWxlbmRhci5mcm9tJ3MgY2FsZW5kYXIgSUQgcGFyc2lu
ZyBwYXJ0IHNpbmNlIGl0IHJlcXVpcmVzIGZ1bGwtZmxlZGdlZCBJU08gODYwMSBwYXJzZXIsCisg
ICAgICAgIHdoaWNoIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKwor
ICAgICAgICBXZSB1c2UgYHVuc2lnbmVkYCBmb3IgQ2FsZW5kYXJJRCwgYW5kIHRoaXMgaWQgY29y
cmVzcG9uZHMgdG8gdGhlIGFycmF5IGluZGV4IG9mIGludGxBdmFpbGFibGVDYWxlbmRhcnMsIHdo
aWNoIHJldHVybnMgYXJyYXkKKyAgICAgICAgb2YgU3RyaW5nIGZyb20gSUNVLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OmludGxBdmFpbGFibGVDYWxlbmRhcnMpOgorICAgICAgICAo
SlNDOjppc284NjAxQ2FsZW5kYXJJRFNsb3cpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDYWxl
bmRhcnMpOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppc284
NjAxQ2FsZW5kYXJJRCk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Y2FsZW5kYXJTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIpOgorICAgICAg
ICAoSlNDOjpwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpUZW1w
b3JhbENhbGVuZGFyOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6
OlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgIChKU0M6OmRlZmF1bHRNZXJnZUZpZWxkcyk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVDYWxlbmRhckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMjEtMDgtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIG9wZW5GaWxlIGZ1bmN0aW9uIHRvIGpzYy5jcHAgdGhhdCBsaW5rcyB0byBmaWxl
IGJhY2tlZCBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNDNjNTBjNjM0ZTlmMTg4ZjNmNGJmZjY1NmY5MWMxYmRiZDdj
OTNmNi4uOGQ4ZTliNmJmYjZlNDdiNGExYzhhYmE4ODhjMzJlNGQ1NjA2NGE0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5DYWxlbmRhcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKToKKwogMjAyMS0wOC0yOCAgQ2FtZXJvbiBN
Y0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc2NlbGxhbmVvdXMgdHlw
byBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRlMGVhZmYxYjYy
Mzk3MWIxYmM5MzgwOThmYWI1YmJmODhhMGU4OTUuLjU5MzA2ZTVkMzhlZTYwODlmMmI1MzA1ZDUw
YjBkZjk0YzE3ZmU4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEw
Nyw2ICsxMDcsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1RlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKIAogICAgIHdhc20v
anMvSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDcxYTgwZDY3ZmQ4MzRlMGRhM2Ri
OWFlYjNkYzA3OTBjODczOGZhYy4uMTIwMjVlYTAzOWFhYjY3NTcyYzIyZDM3ZTM4MmMzMjQ4Y2Q4
YjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2OSw2ICsxNjksOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiskKFBST0pFQ1Rf
RElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRp
bmcudHh0CiAkKFBST0pFQ1RfRElSKS91Y2QvRGVyaXZlZEJpbmFyeVByb3BlcnRpZXMudHh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggOWNmZmU5YWRiZGFiNTRjZjc3NTNiZDk3YzI1ZDgxZGJjNzA1MTgyMC4u
MDE2ZGE4Zjg1Yzk5OThmYzlkMTNhNzMyMjE4YTg0MTM5ZTJjMjIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjYsNiArNjYsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvU3RyaW5nQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdQcm90b3R5cGUubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1N5bWJvbFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE9iamVjdC5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9XYXNtQjNJUkdlbmVyYXRvcklubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NTQyYzdmNzc0NjVlMjZlMTlkNGE2OGE1ZGI3
NjA5MWZkZDQ2NTM5Li5jODJjZjI2MWJhYTAzMzljZWMyZDQ5M2U0ZWRkYTI3YzA1MDdjMDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTkxLDYgKzE5
MSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0Lmgg
XAogICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTeW1ib2xQcm90b3R5cGUubHV0
LmggXAorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAog
ICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTYwMTk2ZTJjNjcwMjNjODEwZDYyZjI1MDk2ODNiODEzZjFmZjA2OC4uMjNj
YmIyOThjZWI2NGI3OGM2MDE4MWMyZTRmZWRiOWYzOTg3MWFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4NDcsNiArMTg0Nyw5IEBACiAJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdy
aXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODBBNzZCMURDRDcx
OTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJDM0M2OTIzRTk0QzFFMDBCQzk3QzAg
LyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oICovOyB9OworCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0Eg
LyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8q
IFRlbXBvcmFsQ2FsZW5kYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMkQ0REUzMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmgg
Ki87IH07CisJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLzsgfTsKIAkJRTMzMDk1REQyMzIxMEExQjAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNENC
QjUyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAv
KiBSZWdFeHBHbG9iYWxEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MDIsNiArMTkwNSw4IEBACiAJCUUzOUJG
Mzk5MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUJGMzk4MjJBMjI4OEIwMEJEMTgz
RSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDhCMkQyMzAyMUUxRTAw
MjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CisJCUUzOURBMURBMjZEQjVFNEMwMDEw
MDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8q
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi87IH07CisJCUUzOURBMURCMjZEQjVF
NTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M0NjMwNTI2REI1REU5MDA4
OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlFMzlE
QTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzOUVFQUYzMjI4MTI0NTAwMDg0NzRGNCAvKiBDYWNoZWRTcGVjaWFsUHJv
cGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAvKiBDYWNo
ZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKIAkJ
RTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0
MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi87IH07CkBAIC01MDg3LDYgKzUwOTIsMTIgQEAK
IAkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckVycm9yQ29kZS5jcHA7IHBhdGggPSB5
YXJyL1lhcnJFcnJvckNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI4
MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmg7IHBhdGggPSB5YXJyL1lhcnJFcnJvckNv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyQzNDNjgyM0U5NEMxRTAwQkM5
N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMkQ0REUwMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVu
ZGFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsQ2Fs
ZW5kYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJENERFMTI2REFGRDQy
MDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUyMjZEQUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzJENERFMzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMkQ0REU1MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVG
QjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMDIsNiArNTIxMyw4IEBACiAJCUUz
QkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1
REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0MyOTVEQzFFRDJDQkFBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M0NjMwNjI2REI1
REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9TUkVudHJ5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0M2OTRCMjIzMDI2ODc0MDA2RkJFNDIgLyogV2FzbVRpZXJVcENvdW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21UaWVyVXBDb3VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQzczQThGMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5n
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU3RyZWFt
aW5nUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDA5LDYgKzcwMjIs
OCBAQAogCQkJCTk5NkI3MzExMUJEOUZBMkMwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5s
dXQuaCAqLywKIAkJCQk5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0
b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMz
NiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5
M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFE
QzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAt
Nzk1Myw2ICs3OTY4LDEyIEBACiAJCQkJRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmggKi8sCiAJCQkJQkRCNEI1RTA5OUNENEMxQkIzQzFDRjA1IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovLAorCQkJCUUzMkQ0REUwMjZE
QUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmNwcCAqLywKKwkJCQlFMzJENERFMzI2
REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovLAorCQkJCUUzMkQ0REU1MjZE
QUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlFMzJENERFMjI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyog
VGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1w
b3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9i
amVjdC5jcHAgKi8sCkBAIC0xMDY0OSw2ICsxMDY3MCwxMSBAQAogCQkJCUE3ODRBMjY0MTFEMTY2
MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzc5OTc4
MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REVBMjZEQUZENDMwMEQ0NTMzQSAv
KiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURB
MURCMjZEQjVFNTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxD
YWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5REExREEyNkRCNUU0QzAw
MTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDUyYjkzZWU4ZDhiYmE2NjA2NGRiMjAxOGYzZjMxNzcwMmY3NmFhOWMuLjFlM2Fl
ZjQ1NTNkOTRhYmQ2YWY2ZDNkMjVkZjQxMzliMzA0ZDQ1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTEwMDksNiArMTAwOSw5IEBAIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAog
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogcnVu
dGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXIuY3BwCitydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBy
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCAzM2UyYzdlMTJiYzNkODdiM2I1OGY4YWVlOTI1Mjc2OWY4YjY5NTljLi4xNDFkNWM0MGI3
YTUwZTI1Y2U0ZjVkMGYyNmJiNmJiNjQyODRkNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTExMCw2ICsxMTAsNyBAQAog
ICAgIG1hY3JvKGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhl
cmEpIFwKKyAgICBtYWNybyhlcmFZZWFyKSBcCiAgICAgbWFjcm8oZXJyb3JzKSBcCiAgICAgbWFj
cm8oZXZhbCkgXAogICAgIG1hY3JvKGV2ZW50cykgXApAQCAtMTY5LDYgKzE3MCw3IEBACiAgICAg
bWFjcm8obWluaW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAgbWFjcm8obWludXRlKSBcCiAg
ICAgbWFjcm8obW9udGgpIFwKKyAgICBtYWNybyhtb250aENvZGUpIFwKICAgICBtYWNybyhtdWx0
aWxpbmUpIFwKICAgICBtYWNybyhuYW1lKSBcCiAgICAgbWFjcm8obmV4dCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA3ZjE2M2M2MGZkMDhi
M2U0ZjhjNTZjNDBlZWFmZWUwZDkxYzIxOTE1Li5jMTJiMzNiZmQyMTUxMjA2YTg1N2U0N2MxMDg3
ODdiMzY2NDE1YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcApAQCAtMTU3NCw0OSArMTU3NCw3MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9jYWxlQXJyYXkpOwogfQogCi0vLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJsZWNhbGVuZGFy
cwotc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMo
KQogewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gYXZhaWxhYmxlQ2FsZW5kYXJzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
WyZdIHsKKyAgICAgICAgYXZhaWxhYmxlQ2FsZW5kYXJzLmNvbnN0cnVjdCgpOworICAgICAgICBB
U1NFUlQoYXZhaWxhYmxlQ2FsZW5kYXJzLT5pc0VtcHR5KCkpOwogCi0gICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVl
X3B0cjxVRW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX2dldEtleXdv
cmRWYWx1ZXNGb3JMb2NhbGUoImNhbGVuZGFycyIsICJ1bmQiLCBmYWxzZSwgJnN0YXR1cykpOwot
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJz
Il9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlx
dWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5
d29yZFZhbHVlc0ZvckxvY2FsZSgiY2FsZW5kYXJzIiwgInVuZCIsIGZhbHNlLCAmc3RhdHVzKSk7
CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAKLSAgICBpbnQzMl90IGNvdW50
ID0gdWVudW1fY291bnQoZW51bWVyYXRpb24uZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY2FsZW5kYXJzIl9zKTsKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3Vu
dChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Mo
c3RhdHVzKSk7CisgICAgICAgIGF2YWlsYWJsZUNhbGVuZGFycy0+cmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb3VudCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKLSAgICBlbGVt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLSAgICBmb3IgKGludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIGludDMyX3QgbGVuZ3Ro
ID0gMDsKLSAgICAgICAgY29uc3QgY2hhciogcG9pbnRlciA9IHVlbnVtX25leHQoZW51bWVyYXRp
b24uZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjYWxlbmRhcnMiX3MpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byBjcmVhdGVJbW1vcnRhbFRocmVhZFNhZmVTdHJpbmcg
PSBbJl0oU3RyaW5nJiYgc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJ
bXBsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50
MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51
bV9uZXh0KGVudW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgICAg
IEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgICAgICBTdHJpbmcgY2FsZW5kYXIo
cG9pbnRlciwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG1hcHBlZCA9IG1hcElDVUNh
bGVuZGFyS2V5d29yZFRvQkNQNDcoY2FsZW5kYXIpKQorICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhXVEZNb3Zl
KG1hcHBlZC52YWx1ZSgpKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF2
YWlsYWJsZUNhbGVuZGFycy0+YXBwZW5kKGNyZWF0ZUltbW9ydGFsVGhyZWFkU2FmZVN0cmluZyhX
VEZNb3ZlKGNhbGVuZGFyKSkpOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBjYWxlbmRhcihw
b2ludGVyLCBsZW5ndGgpOwotICAgICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRh
cktleXdvcmRUb0JDUDQ3KGNhbGVuZGFyKSkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChX
VEZNb3ZlKG1hcHBlZC52YWx1ZSgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1l
bnRzLmFwcGVuZChXVEZNb3ZlKGNhbGVuZGFyKSk7Ci0gICAgfQogCi0gICAgLy8gVGhlIEF2YWls
YWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBhIExpc3QsIG9yZGVyZWQg
YXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKLSAgICAvLyB2YWx1ZXMgaGFkIGJlZW4gc29ydGVk
IHVzaW5nICVBcnJheS5wcm90b3R5cGUuc29ydCUgdXNpbmcgdW5kZWZpbmVkIGFzIGNvbXBhcmVm
bgotICAgIHN0ZDo6c29ydChlbGVtZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwKLSAgICAg
ICAgW10oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoYSwgYikgPCAwOwotICAgICAgICB9KTsKKyAgICAg
ICAgLy8gVGhlIEF2YWlsYWJsZUNhbGVuZGFycyBhYnN0cmFjdCBvcGVyYXRpb24gcmV0dXJucyBh
IExpc3QsIG9yZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhlIHNhbWUKKyAgICAgICAgLy8gdmFs
dWVzIGhhZCBiZWVuIHNvcnRlZCB1c2luZyAlQXJyYXkucHJvdG90eXBlLnNvcnQlIHVzaW5nIHVu
ZGVmaW5lZCBhcyBjb21wYXJlZm4KKyAgICAgICAgc3RkOjpzb3J0KGF2YWlsYWJsZUNhbGVuZGFy
cy0+YmVnaW4oKSwgYXZhaWxhYmxlQ2FsZW5kYXJzLT5lbmQoKSwKKyAgICAgICAgICAgIFtdKGNv
bnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6Y29kZVBvaW50Q29tcGFyZShhLCBiKSA8IDA7CisgICAgICAgICAgICB9KTsKKyAgICB9
KTsKKyAgICByZXR1cm4gYXZhaWxhYmxlQ2FsZW5kYXJzOworfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGVsZW1lbnRzKSkpOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5kYXJJRFN0b3JhZ2Ug
eyBzdGQ6Om51bWVyaWNfbGltaXRzPENhbGVuZGFySUQ+OjptYXgoKSB9OworQ2FsZW5kYXJJRCBp
c284NjAxQ2FsZW5kYXJJRFNsb3coKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0
aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAg
ICAgICAgY29uc3QgYXV0byYgY2FsZW5kYXJzID0gaW50bEF2YWlsYWJsZUNhbGVuZGFycygpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXJzW2luZGV4XSA9PSAiaXNvODYw
MSJfcykgeworICAgICAgICAgICAgICAgIGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZSA9IGluZGV4
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworICAgIHJldHVybiBp
c284NjAxQ2FsZW5kYXJJRFN0b3JhZ2U7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY2FsZW5kYXJzCitzdGF0aWMgSlNBcnJh
eSogYXZhaWxhYmxlQ2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIGludGxB
dmFpbGFibGVDYWxlbmRhcnMoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1p
bnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxlY29sbGF0aW9ucwpAQCAtMTg2NCwyMSArMTg4
NSw0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZh
bHVlc09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSlNB
cnJheSogY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZlY3RvcjxTdHJpbmcsIDE+JiYgZWxlbWVudHMpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQ29udGlndW91cyksIGVsZW1lbnRzLnNpemUoKSk7Ci0gICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgZWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIFdURk1vdmUoZWxl
bWVudHNbaW5kZXhdKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBkYzY5NmQ2NWZh
NWM2MzYzMjJhNmM1MTRmOGIwMDc4NGRlZjJmYzZiLi5mMjEzN2RlMzVlOTNhNTFlNWM4NTUyZGE2
YWRmODliNDU5ZDUwOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCkBAIC0xMDEsNiArMTAxLDE5IEBAIGlubGluZSBjb25zdCBMb2NhbGVTZXQmIGludGxQ
bHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlCiBpbmxp
bmUgY29uc3QgTG9jYWxlU2V0JiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBMb2Nh
bGVTZXQmIGludGxMaXN0Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFp
bGFibGVMb2NhbGVzKCk7IH0KIAordXNpbmcgQ2FsZW5kYXJJRCA9IHVuc2lnbmVkOworY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKworZXh0ZXJuIENhbGVu
ZGFySUQgaXNvODYwMUNhbGVuZGFySURTdG9yYWdlOworQ2FsZW5kYXJJRCBpc284NjAxQ2FsZW5k
YXJJRFNsb3coKTsKK2lubGluZSBDYWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEKCkKK3sKKyAg
ICB1bnNpZ25lZCB2YWx1ZSA9IGlzbzg2MDFDYWxlbmRhcklEU3RvcmFnZTsKKyAgICBpZiAodmFs
dWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxDYWxlbmRhcklEPjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBpc284NjAxQ2FsZW5kYXJJRFNsb3coKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRy
aVN0YXRlIGludGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlv
bnMsIFByb3BlcnR5TmFtZSk7CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciog
ZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVk
IG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKQEAgLTE0OCw2ICsxNjEsNCBAQCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbWFwSUNVQ29sbGF0aW9uS2V5d29yZFRvQkNQNDcoY29uc3QgU3RyaW5n
Jik7CiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyhj
b25zdCBTdHJpbmcmKTsKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBCQ1A0N1RvSUNVQ2FsZW5k
YXJLZXl3b3JkKGNvbnN0IFN0cmluZyYpOwogCi1KU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJp
bmdWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBWZWN0b3I8U3RyaW5nLCAxPiYmKTsKLQogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAppbmRleCBkOGIwYWJhNjI3MjRlYjU1ZmJlNWFmZDc2NTdlNGNhNTUyYTFi
NGJiLi5kNDEwMjQ5NTMwZTA0YmUwZmU0ODI2NmJmNGJkYTc0NzVhMDBmMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTIy
NSw0ICsyMjUsMjIgQEAgaW5saW5lIEpTT2JqZWN0KiBpbnRsQ29lcmNlT3B0aW9uc1RvT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICByZXR1cm4gb3B0aW9u
czsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPgorSlNBcnJheSogY3JlYXRlQXJy
YXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENv
bnRhaW5lciYgZWxlbWVudHMpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyks
IGVsZW1lbnRzLnNpemUoKSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCwganNTdHJpbmcodm0sIGVsZW1lbnRzW2luZGV4XSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNWY1YjA2NGVjYmZjNjU4YTk5MGQyZWI1
OTYzNWJmMmJkYmU4ODgyLi5kNDU2N2VmZTkwMjZjOWE2NDc1ZWQ0NWFiZWEyYWVjNmM3NDg2NDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0yMDEsNiArMjAxLDkgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgog
I2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKQEAgLTEyMTIsNiArMTIxNSwxMyBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVGVtcG9yYWwo
KSkgeworICAgICAgICBtX2NhbGVuZGFyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUq
IGNhbGVuZGFyUHJvdG90eXBlID0gVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGNhbGVuZGFyUHJvdG90eXBlKSk7Cisg
ICAgICAgICAgICB9KTsKKwogICAgICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1w
b3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CkBAIC0yMDkwLDYgKzIxMDAsOCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKIAorICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CisKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0
ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVy
RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlclN0
cmljdEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDE3NWI4YjZiOTE0MzZiNjkzZmZkMzFkZmJjNjc4N2E0MTU0NmQ4OWYu
LjEyNDY1OGYyNDUyZTBjNWFkMGZkZWViMTRlOTBiZTYzODk4ZGIzMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI0LDYgKzMyNCw4
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOwog
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKIAorICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJl
OworCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVy
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0
dGVyU3RyaWN0RnVuY3Rpb247CkBAIC04NzAsNiArODcyLDggQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNPYmplY3QqIG51
bWJlckZvcm1hdENvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
Y29uc3RydWN0b3IodGhpcyk7IH0KICAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0UHJvdG90eXBl
KCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAK
KyAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRhclN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2UzNWVhNjMy
YTVhNTkwN2FlNDE5MDcwNzQ0YmExNGRiNzE5MWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsQ2FsZW5kYXI6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxDYWxlbmRhcikgfTsKKworbmFt
ZXNwYWNlIFRlbXBvcmFsQ2FsZW5kYXJJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQorCitUZW1wb3JhbENhbGVuZGFyKiBUZW1wb3JhbENhbGVuZGFy
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKQoreworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFRlbXBvcmFsQ2FsZW5kYXI+KHZtLmhlYXApKSBUZW1wb3JhbENhbGVuZGFyKHZt
LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxDYWxlbmRhcjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitUZW1wb3JhbENhbGVuZGFyOjpUZW1wb3JhbENhbGVuZGFyKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhbGVuZGFySUQgaWRlbnRpZmllcikKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IFRlbXBvcmFsQ2FsZW5kYXI6OmlzQnVpbHRpbkNh
bGVuZGFyKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIGNhbGVuZGFycyA9
IGludGxBdmFpbGFibGVDYWxlbmRhcnMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBjYWxlbmRhcnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChjYWxlbmRh
cnNbaW5kZXhdID09IHN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbGNhbGVuZGFyc3RyaW5nCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldykKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHBhcnNpbmcgdGVtcG9yYWwgY2FsZW5kYXIgc3RyaW5nLCB3aGljaCByZXF1
aXJlcyBmdWxsIElTTyA4NjAxIHBhcnNlci4KKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGNhbGVuZGFyCitKU09iamVjdCog
VGVtcG9yYWxDYWxlbmRhcjo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNhbGVuZGFyTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGNhbGVu
ZGFyTGlrZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBjYWxlbmRhckxpa2VPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxlbmRhckxpa2UpOworCisgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGltcGxlbWVudCBjb2RlIHJldHJpZXZpbmcgQ2FsZW5kYXIgZnJvbSBUZW1w
b3JhbCBEYXRlIExpa2Ugb2JqZWN0cy4gQnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB0aGV5IGFy
ZSBub3QgaW1wbGVtZW50ZWQgeWV0LgorCisgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxl
bmRhckxpa2VPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09i
amVjdCo+KGNhbGVuZGFyTGlrZSk7CisKKyAgICAgICAgY2FsZW5kYXJMaWtlID0gY2FsZW5kYXJM
aWtlT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7
CisgICAgICAgIGlmIChjYWxlbmRhckxpa2UuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGVuZGFyTGlrZSktPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIGlmICghaGFz
UHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNhbGVu
ZGFyTGlrZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjYWxl
bmRhckxpa2UudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBjYWxlbmRh
cklkID0gaXNCdWlsdGluQ2FsZW5kYXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFjYWxlbmRhcklk
KSB7CisgICAgICAgIGNhbGVuZGFySWQgPSBwYXJzZVRlbXBvcmFsQ2FsZW5kYXJTdHJpbmcoZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICB9CisKKyAgICBBU1NFUlQoY2FsZW5kYXJJZCk7CisgICAgcmV0dXJuIFRl
bXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVy
ZSgpLCBjYWxlbmRhcklkLnZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYTExNGU2ZDQ3YzQyZGY2NjkwNmFjY2FiOTI5NTU5ZDVlMmE0MmQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVGVtcG9yYWxDYWxlbmRhciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHZtLnRlbXBvcmFsQ2FsZW5kYXJTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBU
ZW1wb3JhbENhbGVuZGFyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBDYWxlbmRhcklEKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgQ2FsZW5kYXJJRCBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc0lTTzg2MDEo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIgPT0gaXNvODYwMUNhbGVuZGFySUQoKTsgfQor
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gaXNCdWlsdGluQ2FsZW5kYXIo
U3RyaW5nVmlldyk7CisKKyAgICBzdGF0aWMgSlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbENhbGVuZGFyKFZNJiwgU3RydWN0
dXJlKiwgQ2FsZW5kYXJJRCk7CisKKyAgICBDYWxlbmRhcklEIG1faWRlbnRpZmllciB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbENhbGVuZGFy
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxD
YWxlbmRhckNvbnN0cnVjdG9yRnVuY0Zyb20pOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZ0ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3JU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gdGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yVGFibGUKKyAgICBmcm9tICAg
ICAgICAgICAgIHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1
Y3RvciogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSkKK3sKKyAgICBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBv
cmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50
ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhcik7CisK
K1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbENhbGVuZGFyLCBjb25zdHJ1Y3RUZW1wb3JhbENhbGVu
ZGFyKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIi
X3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9y
YWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1Rhcmdl
dCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgY2FsZW5kYXJTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBjYWxlbmRhclN0cmluZyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxDYWxlbmRhcklEPiBpZGVu
dGlmaWVyID0gVGVtcG9yYWxDYWxlbmRhcjo6aXNCdWlsdGluQ2FsZW5kYXIoY2FsZW5kYXJTdHJp
bmcpOworICAgIGlmICghaWRlbnRpZmllcikgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxl
bmRhcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxlbmRhciIpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxDYWxlbmRhcjo6
ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOTc3NTBhZDli
ZTc3NGNhNDAxOTE2OWU1ZDE5NTE0YTg1NWQ2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IgZmluYWwg
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IElu
dGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKwor
ICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZmM3
NDFhZTU4ZGYxYmEyZTA4Yzk0N2M2OGFmMjdhOTc3NjhiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKKyNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGVGdW5jRmllbGRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VGaWVsZHMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb1N0cmluZyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlR2V0dGVySWQpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLkNhbGVu
ZGFyIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiB0
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlVGFibGUKKyAgICBmaWVsZHMgICAgICAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIG1lcmdlRmllbGRzICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmll
bGRzICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgdG9TdHJpbmcgICAgICAgIHRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgICB0
b0pTT04gICAgICAgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNUb0pTT04gICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAorICAgIGlkICAgICAgICAgICAgICB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlR2V0dGVySWQgICAgICAgICBSZWFkT25seXxEb250RW51bXxDdXN0b21BY2Nlc3Nv
cgorQGVuZAorKi8KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZTo6VGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy1nZXQtdGVtcG9yYWwuY2FsZW5kYXIucHJvdG90eXBl
LmlkCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUdl
dHRlcklkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KSk7Cit9CisKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFy
LnByb3RvdHlwZS5maWVsZHMKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlRnVuY0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
Y2FsZW5kYXIgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjYWxlbmRhcikKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3Rv
dHlwZS5maWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgQ2FsZW5kYXIiX3MpOworCisgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+
aXNJU084NjAxKCk7CisgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7Cisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZmllbGROYW1lczsKKyAgICBmb3JFYWNoSW5JdGVyYWJs
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91
bGRBZGRFcmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGlu
Y2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFpc0lTTzg2MDEgJiYgIXNob3VsZEFkZEVyYUFuZEVyYVllYXIpIHsK
KyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1
ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJpbmcgPT0gInllYXIiX3MpCisgICAgICAgICAg
ICAgICAgc2hvdWxkQWRkRXJhQW5kRXJhWWVhciA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
ZmllbGROYW1lcy5hcHBlbmQodmFsdWUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoc2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgeworICAg
ICAgICBmaWVsZE5hbWVzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmVyYS5pbXBsKCkpKTsKKyAgICAgICAgZmllbGROYW1lcy5hcHBlbmQoanNOb250cml2
aWFsU3RyaW5nKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmFZZWFyLmltcGwoKSkpOworICAgIH0K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGZpZWxkTmFt
ZXMpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtZGVmYXVsdG1lcmdlZmllbGRzCitzdGF0aWMgSlNPYmplY3QqIGRlZmF1bHRNZXJnZUZp
ZWxkcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZmllbGRzLCBKU09i
amVjdCogYWRkaXRpb25hbEZpZWxkcykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogbWVyZ2VkID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKworICAgIHsK
KyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb3JpZ2luYWxLZXlzKHZtLCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7CisgICAgICAgIGZpZWxk
cy0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZpZWxkcywgZ2xvYmFsT2Jq
ZWN0LCBvcmlnaW5hbEtleXMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgbmV4dEtleSA6IG9yaWdpbmFsS2V5cykgeworICAgICAgICAgICAgaWYgKG5leHRL
ZXkgIT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGggJiYgbmV4dEtleSAhPSB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3BWYWx1ZSA9IGZp
ZWxkcy0+Z2V0KGdsb2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3BWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlZC0+cHV0T3duRGF0
YVByb3BlcnR5KHZtLCBuZXh0S2V5LCBwcm9wVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaW5jbHVkZXNNb250
aE9yTW9udGhDb2RlID0gZmFsc2U7CisgICAgeworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBu
ZXdLZXlzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9kZTo6
RXhjbHVkZSk7CisgICAgICAgIGFkZGl0aW9uYWxGaWVsZHMtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhZGRpdGlvbmFsRmllbGRzLCBnbG9iYWxPYmplY3QsIG5ld0tleXMs
IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbmV4dEtleSA6
IG5ld0tleXMpIHsKKyAgICAgICAgICAgIGlmICghaW5jbHVkZXNNb250aE9yTW9udGhDb2RlKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5leHRLZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+bW9udGgg
fHwgbmV4dEtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aENvZGUpCisgICAgICAgICAgICAg
ICAgICAgIGluY2x1ZGVzTW9udGhPck1vbnRoQ29kZSA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkcy0+Z2V0KGds
b2JhbE9iamVjdCwgbmV4dEtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG1lcmdlZCwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIG5leHRLZXksIHByb3BW
YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaW5jbHVk
ZXNNb250aE9yTW9udGhDb2RlKSB7CisgICAgICAgIEpTVmFsdWUgbW9udGggPSBmaWVsZHMtPmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFtb250aC5pc1VuZGVmaW5l
ZCgpKSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChtZXJnZWQsIHRydWUpOwor
ICAgICAgICAgICAgbWVyZ2VkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1vbnRoLCBtb250aCwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBtb250aENvZGUgPSBm
aWVsZHMtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghbW9u
dGhDb2RlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KG1lcmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBtZXJnZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bW9udGhDb2RlLCBtb250aENvZGUsIHNsb3QpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBtZXJnZWQ7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc3VwLXRlbXBvcmFsLmNhbGVuZGFyLnByb3RvdHlwZS5tZXJnZWZpZWxkcworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVGdW5jTWVyZ2VG
aWVsZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGNhbGVuZGFyID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghY2FsZW5kYXIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUubWVyZ2VGaWVsZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ2Fs
ZW5kYXIiX3MpOworCisgICAgYXV0byogZmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvKiBhZGRpdGlvbmFsRmllbGRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBpZiAoY2FsZW5kYXItPmlzSVNPODYwMSgpKQorICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZhdWx0TWVyZ2VGaWVsZHMoZ2xv
YmFsT2JqZWN0LCBmaWVsZHMsIGFkZGl0aW9uYWxGaWVsZHMpKSk7CisKKyAgICBhdXRvIGNvcHlP
YmplY3QgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0
KSAtPiBKU09iamVjdCogeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBh
dXRvKiBjb3BpZWQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworCisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IGtleXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3Ms
IFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBnbG9iYWxPYmplY3QsIGtleXMsIERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgSlNWYWx1ZSBwcm9wVmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvcGllZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
Y29waWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvcGllZDsKKyAgICB9OworCisgICAg
YXV0byogZmllbGRzQ29waWVkID0gY29weU9iamVjdChnbG9iYWxPYmplY3QsIGZpZWxkcyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIGFkZGl0aW9u
YWxGaWVsZHNDb3BpZWQgPSBjb3B5T2JqZWN0KGdsb2JhbE9iamVjdCwgYWRkaXRpb25hbEZpZWxk
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
bmV3TW9udGggPSBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgbmV3TW9udGhDb2RlID0ganNV
bmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld1llYXIgPSBqc1VuZGVmaW5lZCgpOworICAgIEpT
VmFsdWUgbmV3RXJhID0ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIG5ld0VyYVllYXIgPSBq
c1VuZGVmaW5lZCgpOworICAgIHsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkga2V5cyh2bSwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwor
ICAgICAgICBhZGRpdGlvbmFsRmllbGRzQ29waWVkLT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMoYWRkaXRpb25hbEZpZWxkc0NvcGllZCwgZ2xvYmFsT2JqZWN0LCBrZXlzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IGtleXMp
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvcFZhbHVlID0gYWRkaXRpb25hbEZpZWxkc0NvcGll
ZC0+Z2V0KGdsb2JhbE9iamVjdCwga2V5KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXByb3BWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCkK
KyAgICAgICAgICAgICAgICAgICAgbmV3TW9udGggPSBwcm9wVmFsdWU7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoa2V5ID09IHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoQ29kZSkKKyAgICAgICAg
ICAgICAgICAgICAgbmV3TW9udGhDb2RlID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGtleSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyKQorICAgICAgICAgICAgICAgICAg
ICBuZXdZZWFyID0gcHJvcFZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5lcmEpCisgICAgICAgICAgICAgICAgICAgIG5ld0VyYSA9IHByb3BW
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gdm0ucHJvcGVydHlOYW1lcy0+
ZXJhWWVhcikKKyAgICAgICAgICAgICAgICAgICAgbmV3RXJhWWVhciA9IHByb3BWYWx1ZTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzQ29w
aWVkLT5wdXRPd25EYXRhUHJvcGVydHkodm0sIGtleSwgcHJvcFZhbHVlLCBzbG90KTsKKyAgICAg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5l
d01vbnRoLmlzVW5kZWZpbmVkKCkgfHwgIW5ld01vbnRoQ29kZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwg
dHJ1ZSk7CisgICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bW9udGgsIG5ld01vbnRoLCBzbG90KTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAg
ICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tb250aENvZGUsIG5ld01vbnRoQ29kZSwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFu
ZXdZZWFyLmlzVW5kZWZpbmVkKCkgfHwgIW5ld0VyYS5pc1VuZGVmaW5lZCgpIHx8ICFuZXdFcmFZ
ZWFyLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZmllbGRzQ29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+
cHV0T3duRGF0YVByb3BlcnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBuZXdZZWFyLCBz
bG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmllbGRz
Q29waWVkLCB0cnVlKTsKKyAgICAgICAgICAgIGZpZWxkc0NvcGllZC0+cHV0T3duRGF0YVByb3Bl
cnR5KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcmEsIG5ld0VyYSwgc2xvdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgICAgIHsK
KyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpZWxkc0NvcGllZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICBmaWVsZHNDb3BpZWQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZXJhWWVhciwgbmV3RXJhWWVhciwgc2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShmaWVsZHNDb3BpZWQpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRhci5wcm90b3R5cGUudG9zdHJp
bmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVu
Y1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBjYWxlbmRhciA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWNhbGVuZGFyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENh
bGVuZGFyIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
dGxBdmFpbGFibGVDYWxlbmRhcnMoKVtjYWxlbmRhci0+aWRlbnRpZmllcigpXSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5jYWxlbmRh
ci5wcm90b3R5cGUudG9qc29uCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzVmODQ4MGQ4YzM0ZjIw
MWM0N2NiOGVhMWJlNDJmNjRkZDZlN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0K
KworICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZShWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggYWYxNDM2NzVmMWU0YzYyODdlYTJiZTE4ZjQz
M2VlYmUzNzJhNzE3ZC4uOGY0ODIyYjc2NDRjNGE4NDFhZDA2M2Y2MDZmMGYzM2M3ODJjMzNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDE2ICsyMSwy
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAK
KyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbE9iamVjdCk7CiAK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVj
dCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2Fz
dDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgp
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0
PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTQ1LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIC8qIFNvdXJjZSBmb3IgVGVtcG9yYWxPYmplY3QubHV0LmgKIEBiZWdpbiB0ZW1wb3Jh
bE9iamVjdFRhYmxlCisgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3Ig
ICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVO
b3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQK
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWRlYTZhMTNjYjRjNDI5
YjliMDcxOThiYWI2YzQ0ZjMxNDY5ZDA2OC4uMzA5M2UxMTU1YjZkZmRjYWY1N2YwZDUwZGRjNzgy
ZmJkMTVjOWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTYyLDYg
KzE2Miw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTU4NCw2ICsx
NTg1LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNv
ZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWwKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3ltYm9sKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3Qp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDE2QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBiY2VkOTg0M2ZjZTgyNjIwZTg4Yjk3NTAxODNhZWI2MTU1NjI2MDY5Li5hYTc1
NTk3ZWQ4YzUxMmU5ZWNiZWY3NGU0NjA2NmYyNjJlZDEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0
dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7CitjbGFzcyBUZW1wb3JhbENhbGVuZGFy
OwogY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsK
IGNsYXNzIFR5cGVQcm9maWxlckxvZzsKQEAgLTU5MSw2ICs1OTIsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAppbmRleCA3NGY1Njk4ODJlNmQ0Njk0OTgzZjcxOTBhMTc3MDIxNmRhMjZjYzg3Li5kNTg0
NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5YWZlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTI4NCwxMiArMjg0LDIyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGUoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBjb25zdCBMQ2hhciogbGNoYXJDaGFyYWN0ZXJzID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpOwotICAgIEFTU0VSVChjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpKTsKLSAgICBSZWY8U3RyaW5nSW1w
bD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJuYWwobGNoYXJDaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAg
IHJlc3VsdC0+c2V0SGFzaChTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KGxjaGFyQ2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJl
dHVybiAqZW1wdHkoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gY3JlYXRlSW50ZXJu
YWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICByZXN1bHQtPmhhc2goKTsKKyAgICByZXN1bHQt
Pm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gKmVtcHR5KCk7CisgICAgUmVmPFN0cmluZ0lt
cGw+IHJlc3VsdCA9IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNoYXJhY3RlcnMsIGxlbmd0aCk7Cisg
ICAgcmVzdWx0LT5oYXNoKCk7CiAgICAgcmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKaW5kZXggYzgxNWI5N2M3MTM1ZjhjM2MwMWQxYzE1ZDU4N2EzYTllYTkxMzMzOC4u
Y2UzMjFkZWE5OTIyNTRhNDZlMDk1NjhlZmY2Zjc5MTAzODFjMTUyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTI1OSw3ICsyNTksMTMgQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZh
dGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZlB0cjxTdHJp
bmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
VHlwZSomKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVy
cyksIGxlbmd0aCkpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChiaXR3
aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKKyAgICB9CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJp
bmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYs
CiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwu
IEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1MzIxM2Q0ZmQ5MTM0
NjEwZGU4ODkwZDQyZTlhOWIxNDc4YzMyODIuLmE4NDc1MDBkMWI5YzIwNTYxNTM4MDgxZGU2ZTY0
NjkyNmMyYzBhZjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMzAgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuQ2Fs
ZW5kYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTY1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKG5ldy5UZW1wb3JhbC5DYWxlbmRhcik6
CisKIDIwMjEtMDgtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBVcGdyYWRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWYwYWMxMTFhNWI4YjczYzNhMDE3NWRhYTc3OTM2YzA4OWFmY2Y0NAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0w
LDAgKzEsOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VUZW1wb3JhbD0xIikKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQg
Z290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5
cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlm
ICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5k
ZWZpbmVkKQorICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30KKwor
eworICAgIGxldCBjYWxlbmRhciA9IG5ldyBUZW1wb3JhbC5DYWxlbmRhcigiaXNvODYwMSIpOwor
ICAgIHNob3VsZEJlKGNhbGVuZGFyLmlkLCBgaXNvODYwMWApOworICAgIHNob3VsZEJlKFN0cmlu
ZyhjYWxlbmRhciksIGBpc284NjAxYCk7Cit9Cit7CisgICAgbGV0IGNhbGVuZGFyID0gbmV3IFRl
bXBvcmFsLkNhbGVuZGFyKCJncmVnb3J5Iik7CisgICAgc2hvdWxkQmUoY2FsZW5kYXIuaWQsIGBn
cmVnb3J5YCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKGNhbGVuZGFyKSwgYGdyZWdvcnlgKTsKK30K
Kworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBUZW1wb3JhbC5DYWxlbmRhcigiZGlzY29y
ZGlhbiIpOworfSwgUmFuZ2VFcnJvciwgYFJhbmdlRXJyb3I6IGludmFsaWQgY2FsZW5kYXIgSURg
KTsKKworeworICAgIGxldCBpbnB1dCA9IFsibW9udGhDb2RlIiwgImRheSJdOworICAgIGxldCBm
aWVsZHMgPSBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCJpc284NjAxIikuZmllbGRzKGlucHV0KTsK
KyAgICBzaG91bGRCZShpbnB1dCAhPT0gZmllbGRzLCB0cnVlKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShmaWVsZHMpLCBgWyJtb250aENvZGUiLCJkYXkiXWApOworfQoreworICAgIGxl
dCBpbnB1dCA9IFsibW9udGhDb2RlIiwgImRheSJdOworICAgIGxldCBmaWVsZHMgPSBUZW1wb3Jh
bC5DYWxlbmRhci5mcm9tKCJncmVnb3J5IikuZmllbGRzKGlucHV0KTsKKyAgICBzaG91bGRCZShp
bnB1dCAhPT0gZmllbGRzLCB0cnVlKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShmaWVs
ZHMpLCBgWyJtb250aENvZGUiLCJkYXkiXWApOworfQoreworICAgIGxldCBpbnB1dCA9IFsibW9u
dGhDb2RlIiwgImRheSIsICJ5ZWFyIl07CisgICAgbGV0IGZpZWxkcyA9IFRlbXBvcmFsLkNhbGVu
ZGFyLmZyb20oImlzbzg2MDEiKS5maWVsZHMoaW5wdXQpOworICAgIHNob3VsZEJlKGlucHV0ICE9
PSBmaWVsZHMsIHRydWUpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGZpZWxkcyksIGBb
Im1vbnRoQ29kZSIsImRheSIsInllYXIiXWApOworfQorCit7CisgICAgbGV0IGlucHV0ID0gWyJt
b250aENvZGUiLCAiZGF5IiwgInllYXIiXTsKKyAgICBsZXQgZmllbGRzID0gVGVtcG9yYWwuQ2Fs
ZW5kYXIuZnJvbSgiZ3JlZ29yeSIpLmZpZWxkcyhpbnB1dCk7CisgICAgc2hvdWxkQmUoaW5wdXQg
IT09IGZpZWxkcywgdHJ1ZSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZmllbGRzKSwg
YFsibW9udGhDb2RlIiwiZGF5IiwieWVhciIsImVyYSIsImVyYVllYXIiXWApOworfQoreworICAg
IGxldCBtZXJnZWQgPSBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCdpc284NjAxJykubWVyZ2VGaWVs
ZHMoCisgICAgICB7IHllYXI6IDIwMDYsIG1vbnRoOiA3LCBkYXk6IDMxIH0sCisgICAgICB7IG1v
bnRoQ29kZTogJ00wOCcgfQorICAgICk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobWVy
Z2VkKSwgYHsieWVhciI6MjAwNiwiZGF5IjozMSwibW9udGhDb2RlIjoiTTA4In1gKTsKK30KK3sK
KyAgICBsZXQgbWVyZ2VkID0gVGVtcG9yYWwuQ2FsZW5kYXIuZnJvbSgnZ3JlZ29yeScpLm1lcmdl
RmllbGRzKAorICAgICAgeyB5ZWFyOiAyMDA2LCBtb250aDogNywgZGF5OiAzMSB9LAorICAgICAg
eyBtb250aENvZGU6ICdNMDgnIH0KKyAgICApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KG1lcmdlZCksIGB7InllYXIiOjIwMDYsImRheSI6MzEsIm1vbnRoQ29kZSI6Ik0wOCJ9YCk7Cit9
CisKK3sKKyAgICBjb25zdCB1c2VyID0geworICAgICAgICBpZDogNzc1LAorICAgICAgICB1c2Vy
bmFtZTogJ3JvYm90Y2F0JywKKyAgICAgICAgcGFzc3dvcmQ6ICdodW50ZXIyJywgLy8gTm90ZTog
RG9uJ3QgcmVhbGx5IHN0b3JlIHBhc3N3b3JkcyBsaWtlIHRoYXQKKyAgICAgICAgdXNlckNhbGVu
ZGFyOiBUZW1wb3JhbC5DYWxlbmRhci5mcm9tKCdncmVnb3J5JykKKyAgICB9OworICAgIGxldCBz
dHJpbmcgPSBKU09OLnN0cmluZ2lmeSh1c2VyKTsKKyAgICBzaG91bGRCZShzdHJpbmcsIGB7Imlk
Ijo3NzUsInVzZXJuYW1lIjoicm9ib3RjYXQiLCJwYXNzd29yZCI6Imh1bnRlcjIiLCJ1c2VyQ2Fs
ZW5kYXIiOiJncmVnb3J5In1gKTsKKyAgICAvLyBUbyByZWJ1aWxkIGZyb20gdGhlIHN0cmluZzoK
KyAgICBmdW5jdGlvbiByZXZpdmVyKGtleSwgdmFsdWUpIHsKKyAgICAgICAgaWYgKGtleS5lbmRz
V2l0aCgnQ2FsZW5kYXInKSkKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhbC5DYWxlbmRhci5m
cm9tKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICBzaG91bGRCZShK
U09OLnBhcnNlKHN0cmluZywgcmV2aXZlcikudXNlckNhbGVuZGFyIGluc3RhbmNlb2YgVGVtcG9y
YWwuQ2FsZW5kYXIsIHRydWUpOworfQo=
</data>
<flag name="review"
          id="459876"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>