<?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>213000</bug_id>
          
          <creation_ts>2020-06-09 16:20:42 -0700</creation_ts>
          <short_desc>Stop using discriminatory names for WebGL and Plugin blocking</short_desc>
          <delta_ts>2020-06-11 13:20:17 -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>New Bugs</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>213092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660998</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-06-09 16:20:42 -0700</bug_when>
    <thetext>Stop using discriminatory names for WebGL and Plugin blocking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661000</commentid>
    <comment_count>1</comment_count>
      <attachid>401490</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-06-09 16:23:47 -0700</bug_when>
    <thetext>Created attachment 401490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661001</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-06-09 16:26:25 -0700</bug_when>
    <thetext>Will wait for EWS to make sure I didn&apos;t break anything.

The style bot complaint is because it doesn&apos;t like the newer C++ object initialisation inside a constructor&apos;s initialisation list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661018</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-06-09 17:06:12 -0700</bug_when>
    <thetext>Committed r262826: &lt;https://trac.webkit.org/changeset/262826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661019</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-09 17:07:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/64187068&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401490</attachid>
            <date>2020-06-09 16:23:47 -0700</date>
            <delta_ts>2020-06-09 16:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213000-20200610092346.patch</filename>
            <type>text/plain</type>
            <size>103775</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ4ODk0MTE0MDA1Y2Fi
OGE0YjhlNWUzNTZhYjkzNGRkZWFjNTEwNi4uNzBmODRhNmMxMDE1ZTQ0MmU0NGEyNDUxZjM4MmMw
YmQxYTdmYTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTA2LTA5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGRpc2NyaW1p
bmF0b3J5IG5hbWVzIGZvciBXZWJHTCBhbmQgUGx1Z2luIGJsb2NraW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwMDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQmxhY2tsaXN0VXBkYXRlci5oLgorICAgICAgICAoV2ViQ29yZTo6Qmxv
Y2tsaXN0VXBkYXRlcjo6cGx1Z2luQmxvY2tsaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2Nr
bGlzdFVwZGF0ZXI6OndlYkdMQmxvY2tsaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQmxv
Y2tsaXN0VXBkYXRlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9CbGFja2xpc3RVcGRhdGVyLm1tLgorICAgICAgICAoV2ViQ29yZTo6QmxvY2tsaXN0VXBkYXRl
cjo6cmVhZEJsb2NrbGlzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QmxvY2tsaXN0VXBkYXRl
cjo6cmVsb2FkSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QmxvY2tsaXN0VXBkYXRl
cjo6aW5pdGlhbGl6ZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2ts
aXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxh
Y2tsaXN0LmguCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbTogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbGFja2xpc3QubW0u
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5CbG9ja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW5W
ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRh
dGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0Ojp+UGx1Z2luQmxvY2tsaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkJsb2NrbGlzdDo6c3BsaXRPU1ZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkJsb2NrbGlzdDo6aXNVcGRhdGVBdmFpbGFibGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpQbHVnaW5CbG9ja2xp
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxhY2tsaXN0LmguCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxhY2tsaXN0Lm1tLgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCbG9j
a2xpc3Q6OnNob3VsZEJsb2NrV2ViR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCbG9ja2xp
c3Q6OnNob3VsZFN1Z2dlc3RCbG9ja2luZ1dlYkdMKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNo
ZXNCdWlsZEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCbG9ja2xpc3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJsb2NrbGlzdDo6c2hvdWxkQmxvY2sgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xCbG9ja2xpc3Q6OnNob3VsZFN1Z2dlc3RCbG9ja2luZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJsb2NrbGlzdDo6V2ViR0xCbG9ja2xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCbG9ja2xpc3Q6On5XZWJHTEJsb2NrbGlzdCk6CisK
IDIwMjAtMDYtMDkgIEZyYW5rIFlhbmcgIDxndW93ZWlfeWFuZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViS2l0IENyYXNoZXMgd2hlbiBTVkcgRmlsdGVyIExvZ2dpbmcgaXMgVHVybmVkIE9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDFlMzkxZjQyYzE0YzQwZmYxYmUxZDg3MDM4ODE4MTg2M2QwNWQ0MjguLjc4M2Q4
ZTg4Njc3OTVjNzQ4YmIzMzllYmZiOThkZmRiNTVlYTUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjAtMDYtMDkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0b3AgdXNpbmcgZGlzY3JpbWluYXRvcnkgbmFtZXMgZm9yIFdlYkdMIGFuZCBQbHVnaW4g
YmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpnZXRQbGF0Zm9ybVBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW06CisgICAg
ICAgIChXS0NvbnRleHRJc1BsdWdJblVwZGF0ZUF2YWlsYWJsZSk6CisgICAgICAgIChXS0NvbnRl
eHRTaG91bGRCbG9ja1dlYkdMKToKKyAgICAgICAgKFdLQ29udGV4dFNob3VsZFN1Z2dlc3RCbG9j
a1dlYkdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0b3Jl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9s
aWN5Rm9yUGx1Z2luKToKKwogMjAyMC0wNi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIEVsZW1lbnQgU2VuZCBLZXlzIGNhbiBoYW5nIHdoZW4gYW4g
YXV0b21hdGlvbiB3aW5kb3cgYmVjb21lcyB1bmZvY3VzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCA0OTNmZDBmODdjZmZmNGM2OWViZmM3YTMzZjE5ZDIzZDBkZTQ3NGQyLi41MzVj
NWM3YmFlODc2YWRkOTJhNGNiNDNlY2FmYjc3ZmY0MGE3NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgZGlzY3JpbWluYXRvcnkgbmFtZXMg
Zm9yIFdlYkdMIGFuZCBQbHVnaW4gYmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChzaG91bGRCbG9ja1BsdWdpbik6CisgICAgICAgIChzaG91bGRCbG9j
a1dlYkdMKToKKwogMjAyMC0wNi0wOCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViS2l0TGVnYWN5OiBFeGNsdWRlIE5TVVJMQ29ubmVjdGlvblNQSS5o
IGZyb20gd2F0Y2hPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFjN2RhNzY5M2ZiODE1
Yjg2MjczODFhMDdhYjJhZjBiNzdmMTFhMi4uYTI1Mjg2ZTBhNjgzMTZlMDE3YzkxNDBiOTA0ODJi
ZGUwODU5MTAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00NDgsNyArNDQ4LDcgQEAg
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAogcGxhdGZv
cm0vaW9zL3dhay9XS0dyYXBoaWNzLm1tCiBwbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5tbQogCi1w
bGF0Zm9ybS9tYWMvQmxhY2tsaXN0VXBkYXRlci5tbQorcGxhdGZvcm0vbWFjL0Jsb2NrbGlzdFVw
ZGF0ZXIubW0KIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9t
YWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHBsYXRmb3JtL21h
Yy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCiBwbGF0Zm9ybS9t
YWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQotcGxhdGZvcm0vbWFjL1BsdWdpbkJs
YWNrbGlzdC5tbQorcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQogcGxhdGZvcm0vbWFj
L1B1YmxpY1N1ZmZpeE1hYy5tbQogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCiBw
bGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC00ODYsNyArNDg2LDcg
QEAgcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxF
eHRyYXMubW0KIHBsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQotcGxhdGZvcm0vbWFj
L1dlYkdMQmxhY2tsaXN0Lm1tCitwbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KIHBsYXRm
b3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KIHBsYXRmb3JtL21hYy9XZWJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ1MzM3Yzk1NjAyZjQxZmY5YWQ0NWYwYmRlNzU2OTUwNmI0NTgyZTkuLmZjMWMyZjI0YWVmYWU5
N2MwY2NjODgwZjA3ZGM1ZjZkMDhiZDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1LDkgKzc1LDcgQEAKIAkJMDY2Qzc3
MkIwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjZDNzcyQTBBQjYwM0I3MDAyMzhDQzQgLyogRmls
ZUNob29zZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNjZDNzczMTBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NkM3NzJG
MEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oICovOyB9OwogCQkw
NkU4MUVENzBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNkU4MUVENjBB
QjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDcwMzM0RDMxNDU5RkZB
RDAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwMzM0RDAxNDU5RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQu
Y3BwICovOyB9OwogCQkwNzAzMzRENzE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzRENjE0NTlG
RkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAz
MzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLzsgfTsKIAkJMDcwMzYzRTIx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RBMTgxQTFDREMwMEMwNzRB
NSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwMzYzRTMxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbSAqLzsgfTsKIAkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0
dXJlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLzsg
fTsKQEAgLTEwMCw3ICs5OCw2IEBACiAJCTA3MEU4MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzBFODFEMDFCRjI3NjU2MDAxRkRBNDggLyogVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQgLyog
TWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAv
KiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovOyB9OwogCQkwNzE5
NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M4QUQxMTFEMDczRDYzMDA4
N0M1Q0UgLyogQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0gKi87IH07Ci0JCTA3MUE5RUMyMTY4RkJD
NDMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBU
ZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVH
ZW5lcmljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZE
MUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJ
CTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFE
NUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI0LDE2ICsxMjEsMTMgQEAK
IAkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBMTU1MzIxNzdBMzlB
MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCODc2NzFFNDM4NUFDMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzNCODc2MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJM
aXN0LmggKi87IH07CiAJCTA3M0I4NzY5MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURh
dGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0I4NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCAqLzsg
fTsKLQkJMDczQkRDMDUxRjY4NDM2MTAwRUUzNEVEIC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTExQkUxRjY4
M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovOyB9OwogCQkwNzRFODJCQjE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyog
UGxhdGZvcm1UaW1lUmFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUz
ODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJMDc1
Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUy
IC8qIENhY2hlZFRleHRUcmFjay5oICovOyB9OwogCQkwNzU0QTVFQTIxNUVBM0I4MDAyRDNBOTkg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTRBNUU4MjE1RUEzQjcwMDJEM0E5OSAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlRmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3NTdCMTNFMjE0QUU3OTkwMDc5NEIwRCAvKiBWaWRlb1ByZXNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1N0IxM0My
MTRBRTc5NzAwNzk0QjBEIC8qIFZpZGVvUHJlc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc2MTFEQzEyNDQwRTU5QjAwRDgwNzA0IC8qIE1l
ZGlhVXNhZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzYxMURCODI0M0ZCNzVDMDBEODA3MDQgLyogTWVkaWFVc2FnZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzYzOEE5OTE4ODQ0
ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzhBOTcxODg0NDg3MjAwRTE1QTFCIC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3NjM4QTk4MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tICovOyB9OwotCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4
NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi87IH07CiAJCTA3Njk3MDg3
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4
dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZEMUMxRjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZEMUMxRDIzRjZEOUQ4MDBEOTVCMDYgLyogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oICovOyB9OwpAQCAtMTc4LDcgKzE3Miw2IEBACiAJCTA3OEU0M0RFMUFCQjZG
NkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4RTQzREMxQUJCNkY2RjAwMUMy
RkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gKi87IH07CiAJCTA3OEVEMTkz
MjE2RDA3OTUwMDc3NUIzMyAvKiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ2RDMwQzIxNDZFQTM4MDAzRERG
ODQgLyogSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTA3OTQxNzkxMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDE3OEYxNjZF
ODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3OTQxNzkyMTY2
RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJh
bmRUZXh0VHJhY2suaCAqLzsgfTsKIAkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTQxNzkzMTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDc5NjlEQUMxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTY5RDkyMTdEMTQxNTEwMDdG
Rjg0MiAvKiBKU1JUQ0RhdGFDaGFubmVsLmggKi87IH07CkBAIC02MDIsOCArNTk1LDggQEAKIAkJ
MUFGODlBNDIxNTE4RkRFQTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGODlBNDExNTE4RkRFQTAwRTU0N0I1
IC8qIFRpbGVkQmFja2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBRjhFMTFBMTI1NjU5MjYwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGOEUxMTkxMjU2
NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FM
UmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFGRTExOTgwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlz
dC5oICovOyB9OwotCQkxQUZGQzQ1ODFENUU4NjU1MDAyNjdBNjYgLyogV2ViR0xCbGFja2xpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkZDNDUx
MUQ1RTdFQzcwMDI2N0E2NiAvKiBXZWJHTEJsYWNrbGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBRkZDNDU5MUQ1RTg2NjEwMDI2N0E2NiAv
KiBQbHVnaW5CbGFja2xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRkZDNDRGMUQ1RTdFQzcwMDI2N0E2NiAvKiBQbHVnaW5CbGFja2xpc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUZGQzQ1
ODFENUU4NjU1MDAyNjdBNjYgLyogV2ViR0xCbG9ja2xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkZDNDUxMUQ1RTdFQzcwMDI2N0E2NiAvKiBX
ZWJHTEJsb2NrbGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTFBRkZDNDU5MUQ1RTg2NjEwMDI2N0E2NiAvKiBQbHVnaW5CbG9ja2xpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkZDNDRGMUQ1
RTdFQzcwMDI2N0E2NiAvKiBQbHVnaW5CbG9ja2xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpD
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUIx
MjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFCMTI0RDhFMUQzODBCQjYwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi87IH07CiAJCTFCRjlEQjNDMUQzOTczQUQw
MDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTks
NyArMTkxMiw2IEBACiAJCTVDREQ4MzY0MUU0MzI1QTAwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNERDgzM0YxRTQzMjUzRDAwNjIxRTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHAgKi87IH07CiAJCTVDREZBNkM4MUFBNEYyREEwMEVBODc0NiAvKiBDb250ZW50
RXh0ZW5zaW9uQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNERkE2QzcxQUE0RjJEQTAwRUE4NzQ2IC8qIENvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUNFRUU0MzYxRjVGOEYyMTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8q
IFJlY3RFZGdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTVEMjFBODAyMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQyMUE4MDAxM0VDRTVE
RjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5jcHAgKi87IH07CiAJCTVEMjFBODAzMTNFQ0U1REYw
MEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVEMjFBODAxMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIu
aCAqLzsgfTsKIAkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENTk3NUIxMTk2
MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0N0YwIC8qIFNj
cm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUQ5MjVCNjYwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTkxLDcgKzIx
ODMsNiBAQAogCQk3QTFEN0ZDQjE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2Fs
aXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMzODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVk
U3RyaW5ncy5qcyAqLzsgfTsKIAkJN0EyMjczMjEyMEM5RkFGRTAwREIxREVGIC8qIFdlYktpdE5T
SW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMjI3MzFGMjBDOUY5REEwMERCMURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyOUY1NzIx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjlGNTcxMThDNjk1MTQw
MDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi87IH07Ci0JCTdBNDUw
MzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E0NTAzMkQxOERCNzE3MjAwMzc3
QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgKi87IH07CiAJCTdBNDUwMzMwMThEQjcxNzIw
MDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNDUwMzJFMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJl
ZExpbmVSZWFkZXIuaCAqLzsgfTsKIAkJN0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3Bl
Y3Rvckhpc3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNTQ4NTdFMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggKi87IH07
CiAJCTdBNTQ4ODE3MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNTQ4ODE1MTRFNDMyQTEw
MDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLzsgfTsKQEAgLTIxOTksNyArMjE5MCw2IEBA
CiAJCTdBNTY5OTcwMjA4NkM2MTkwMDBFMDQzMyAvKiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1
Njk5NkUyMDg2QzYxODAwMEUwNDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E2NzRC
REMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2NzRCREEwRjlFQkY0RTAwNkNG
MDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovOyB9OwogCQk3QTkyOUNBNzFDNTk4QUE5
MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk3QTkzODY4NTE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkzODY4
MjE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5jcHAgKi87IH07CiAJCTdBOTM4Njg2MThE
Q0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkzODY4MzE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5l
ci5oICovOyB9OwogCQk3QUEzQTY5QTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk2
MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjlDMTk0QTY0RTcwMDFDQkQyNCAv
KiBUaWxlR3JpZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FBM0E2OTgxOTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVHcmlkLmggKi87IH07CkBAIC0yMjEw
LDkgKzIyMDAsNyBAQAogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUUzMzVGMjFBQ0Iw
OUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyog
V2hlZWxFdmVudFRlc3RNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0FFNkM5M0MxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRT
aGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FFNkM5M0ExQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICov
OyB9OwotCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZDMThDRkIyREYw
MEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9OwogCQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRC
RUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggKi87IH07Ci0J
CTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2
NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsKIAkJN0FGOUIyMDYxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRjlCMjAwMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0Lmgg
Ki87IH07CiAJCTdBRjlCMjBEMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMDkxOENGQjVG
MjAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2
NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxp
c3QuaCAqLzsgfTsKQEAgLTI4MjMsMTIgKzI4MTEsOCBAQAogCQk5NzRBODYyMzE0QjdBREJCMDAz
RkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9s
aWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzRE
MkRBMzE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzUyRDM4RTE0MTMxMDRCMDAzMzA1
QkQgLyogSlNIVE1MU3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NTJEMzhDMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxl
bWVudC5oICovOyB9OwotCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTc1OUU5MzQxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCAqLzsgfTsK
LQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzU5RTkzNTE0RUYxQ0Y4MDAyNkEy
REQgLyogVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJOTc1OUU5NDAxNEVGMUNGODAwMjZBMkREIC8q
IFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc1OUU5MzYxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk3NTlFOTQyMTRFRjFDRjgwMDI2
QTJERCAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc1OUU5MzgxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5j
cHAgKi87IH07CiAJCTk3NTlFOTQzMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTlFOTM5MTRF
RjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4
dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzU5RTkzQjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAg
Ki87IH07CiAJCTk3NTlFOTQ2MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzU5RTkzQzE0
RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQk5NzU5RTk0OTE0
RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTlFOTQ4MTRFRjFENDkwMDI2QTJERCAvKiBM
b2FkYWJsZVRleHRUcmFjay5oICovOyB9OwogCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyog
Q3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzVDQTI4ODEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggKi87IH07CkBAIC0zNDcxLDcgKzM0
NTUsNiBAQAogCQlBRERGMUFENzEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURERjFBRDUxMjU3
Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLzsgfTsKIAkJQURFQzc4RjgxOEVFNTMw
ODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVu
dEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUIxMEI2OTgwMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjEwQjY5N0QxNDBDMTc0MDAwQkMx
QzI2IC8qIFdlYlZUVFRva2VuLmggKi87IH07Ci0JCUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAv
KiBXZWJWVFRUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjEwQjY5N0UxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5j
cHAgKi87IH07CiAJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMEI2OTdG
MTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCAqLzsgfTsKIAkJQjFBRDRFNzQx
M0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIFRl
eHRUcmFja0xvYWRlci5oICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNT
VkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKQEAg
LTM5NzMsMzMgKzM5NTYsMjMgQEAKIAkJQkNGQjJFNUUwOTc5RTQ2NDAwQkE3MDNEIC8qIENhY2hl
ZFJlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0ZCMkU1RDA5NzlFNDY0MDBCQTcwM0QgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZG
NjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVu
Z3RoQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDkwMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJQkUxNkM1OTIxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZEdlbmVyaWNUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkUxNkM1OEUxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwICov
OyB9OwogCQlCRTE2QzU5MzE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkUxNkM1
OEYxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZEdlbmVyaWNUZXh0VHJhY2suaCAqLzsgfTsKLQkJ
QkUxNkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTE2QzU5MDE3Q0ZF
MTcyMDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJQkUxNkM1
OTUxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZUVFRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkUxNkM1OTExN0NGRTE3MjAwODUy
QzA0IC8qIEluYmFuZFdlYlZUVFRleHRUcmFjay5oICovOyB9OwotCQlCRTIwNTA3OTE4QTQ1ODY4
MDA4MDY0N0UgLyogVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFMjA1MDc2MThBNDU4NDYwMDgwNjQ3RSAvKiBWVFRDdWUuY3BwICovOyB9
OwogCQlCRTIwNTA3QTE4QTQ1ODZCMDA4MDY0N0UgLyogVlRUQ3VlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTIwNTA3NzE4QTQ1ODQ2MDA4MDY0N0Ug
LyogVlRUQ3VlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkUyMDUwN0UxOEE0NThDMjAwODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkUyMDUwN0MxOEE0NThCMTAw
ODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oICovOyB9OwogCQlCRTIwNTA4MjE4QTQ2MEMzMDA4MDY0
N0UgLyogSlNWVFRDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFMjA1MDgwMThBNDYwQUEwMDgwNjQ3RSAvKiBKU1ZUVEN1ZS5oICovOyB9OwotCQlC
RTIzNDgwQzE4QTk4NzBCMDBFNEI2RTggLyogRGF0YUN1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTIzNDgwOTE4QTk4NzAzMDBFNEI2RTggLyog
RGF0YUN1ZS5jcHAgKi87IH07CiAJCUJFMjM0ODBEMThBOTg3MTQwMEU0QjZFOCAvKiBEYXRhQ3Vl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTIzNDgw
QTE4QTk4NzAzMDBFNEI2RTggLyogRGF0YUN1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJFNjEwMzlFMThBOUQ2NUEwMERENTBENyAvKiBKU0Rh
dGFDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
NjEwMzlDMThBOUQ2MTIwMERENTBENyAvKiBKU0RhdGFDdWUuaCAqLzsgfTsKLQkJQkU4OEUwQzEx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRy
YWNrTGlzdEJhc2UuY3BwICovOyB9OwogCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLzsgfTsKLQkJ
QkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4
IC8qIEF1ZGlvVHJhY2suY3BwICovOyB9OwogCQlCRTg4RTBEOTE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCRTg4RTBEQjE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tM
aXN0LmNwcCAqLzsgfTsKIAkJQkU4OEUwREMxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4
RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKLQkJQkU4OEUw
REUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2suY3BwICovOyB9OwogCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9U
cmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4
OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNw
cCAqLzsgfTsKIAkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENjE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsgfTsKIAkJQkU4RUYwNDMxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9U
cmFjay5oICovOyB9OwogCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4
RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKIAkJQkU4
RUYwNEIxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8q
IEpTVmlkZW9UcmFjay5oICovOyB9OwogCQlCRThFRjA0RDE3MUM5MDE0MDA5QjQ4QzMgLyogSlNW
aWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkU4RUYwNDkxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCAqLzsg
fTsKIAkJQkU5MTNEODAxODFFRjkyNDAwRENCMDlFIC8qIFRyYWNrUHJpdmF0ZUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOTEzRDdGMTgxRUY4
RTUwMERDQjA5RSAvKiBUcmFja1ByaXZhdGVCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkU5NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8qIElu
YmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkU5NjFDNTIxOEFEMzM3QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJh
Y2suY3BwICovOyB9OwogCQlCRTk2MUM1NTE4QUQzMzhDMDBEMDdEQzUgLyogSW5iYW5kRGF0YVRl
eHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkU5NjFDNTMxOEFEMzM3QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCAqLzsgfTsK
IAkJQkVBODA3QzkwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFQTgwN0M3MEY3MTRBMDMwMDUy
NDE5OSAvKiBTZWxlY3Rpb25SZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
RUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDA5Niw3ICs0MDY5LDYg
QEAKIAkJQ0QxOUZFQTgxRjU3Mzk3MjAwMEM0MkZCIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUZFQTYxRjU3Mzk3MjAw
MEM0MkZCIC8qIEltYWdlRGVjb2Rlci5oICovOyB9OwogCQlDRDE5RkVBRTFGNTc0QjZEMDAwQzQy
RkIgLyogSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QxOUZFQUMxRjU3NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVjb2Rl
ckFWRk9iakMuaCAqLzsgfTsKIAkJQ0QxOUZFQUYxRjU3NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVj
b2RlckFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDE5RkVBRDFGNTc0QjZEMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSAq
LzsgfTsKLQkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
MUU3MzQ2MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgKi87
IH07CiAJCUNEMjI1QzBCMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMDkx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi87IH07CiAJCUNEMjI1
QzBDMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwQTFDNDZGQkY0MDAxNDA3
NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDI3QUU0RTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01
MDU4LDcgKzUwMzAsNiBAQAogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJD
b3JlUHJlZml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OwogCQlF
RkNDNkM4RjIwRkU5MTQ0MDBBMjMyMUIgLyogQ2FudmFzQWN0aXZpdHlSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVGQ0M2QzhEMjBGRTkxNDAw
MEEyMzIxQiAvKiBDYW52YXNBY3Rpdml0eVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUYxMjE3MUY1MTZBOENFRDIwMDAwNTNDQSAvKiBX
ZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCAqLzsg
fTsKIAkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMjE3MUY0MTZBOEJDNjMw
MDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi87IH07CiAJCUYzMkJEQ0Q5MjM2M0FBQ0EwMDcz
QjZBRSAvKiBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzJCRENENzIzNjNBQUNBMDA3M0I2QUUgLyogVXNl
ckdlc3R1cmVFbXVsYXRpb25TY29wZS5oICovOyB9OwogCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZF
RUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC02NTMzLDEyICs2NTA0LDEyIEBACiAJCTFBRjhFMUMxMTI1NjczRTAwMDIz
MEZGNyAvKiBQcm94eVNlcnZlckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByb3h5U2VydmVyQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUZFMTE5NzBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk4MENCRkZDQzQw
MDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFBRkZDNDREMUQ1RTdFQzcwMDI2N0E2NiAvKiBCbGFja2xpc3RVcGRhdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsYWNrbGlzdFVwZGF0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFGRkM0NEUxRDVFN0VDNzAwMjY3QTY2IC8qIEJs
YWNrbGlzdFVwZGF0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBCbGFja2xpc3RVcGRhdGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUZG
QzQ0RjFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxhY2tsaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkJsYWNrbGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQUZGQzQ1MDFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxhY2tsaXN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luQmxhY2tsaXN0
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUZGQzQ1MTFENUU3RUM3MDAyNjdB
NjYgLyogV2ViR0xCbGFja2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR0xCbGFja2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFGRkM0NTIx
RDVFN0VDNzAwMjY3QTY2IC8qIFdlYkdMQmxhY2tsaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xCbGFja2xpc3QubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBRkZDNDREMUQ1RTdFQzcwMDI2N0E2NiAvKiBCbG9ja2xpc3RVcGRhdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrbGlzdFVwZGF0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFGRkM0NEUxRDVFN0VDNzAwMjY3QTY2IC8q
IEJsb2NrbGlzdFVwZGF0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCbG9ja2xpc3RVcGRhdGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUZGQzQ0RjFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxvY2tsaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkJsb2NrbGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQUZGQzQ1MDFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxvY2tsaXN0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luQmxvY2ts
aXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUZGQzQ1MTFENUU3RUM3MDAy
NjdBNjYgLyogV2ViR0xCbG9ja2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR0xCbG9ja2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFGRkM0
NTIxRDVFN0VDNzAwMjY3QTY2IC8qIFdlYkdMQmxvY2tsaXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xCbG9ja2xpc3QubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFW
Rk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZP
YmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhFMUQzODBCQjYwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29uc3RyYWludHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5MTUsOCArMjA4ODYsOCBAQAog
CQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUZGQzQ0RDFENUU3RUM3MDAyNjdBNjYgLyogQmxh
Y2tsaXN0VXBkYXRlci5oICovLAotCQkJCTFBRkZDNDRFMUQ1RTdFQzcwMDI2N0E2NiAvKiBCbGFj
a2xpc3RVcGRhdGVyLm1tICovLAorCQkJCTFBRkZDNDREMUQ1RTdFQzcwMDI2N0E2NiAvKiBCbG9j
a2xpc3RVcGRhdGVyLmggKi8sCisJCQkJMUFGRkM0NEUxRDVFN0VDNzAwMjY3QTY2IC8qIEJsb2Nr
bGlzdFVwZGF0ZXIubW0gKi8sCiAJCQkJRjU4Nzg0RjAwMkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNv
ck1hYy5tbSAqLywKIAkJCQlFMUJBNjZGMDE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1pY0xpbmtl
ckludGVycG9zaW5nLmggKi8sCiAJCQkJOTM1QzQ3NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2
ZW50TWFjLm1tICovLApAQCAtMjA5MzksOCArMjA5MTAsOCBAQAogCQkJCTI5RTREOEUwMTZCMDk1
OTgwMEM4NDcwNCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tICovLAogCQkJCUNE
QTI5QTE1MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCAq
LywKIAkJCQlDREEyOUExNDFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tICovLAotCQkJCTFBRkZDNDRGMUQ1RTdFQzcwMDI2N0E2NiAvKiBQbHVnaW5CbGFj
a2xpc3QuaCAqLywKLQkJCQkxQUZGQzQ1MDFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxhY2ts
aXN0Lm1tICovLAorCQkJCTFBRkZDNDRGMUQ1RTdFQzcwMDI2N0E2NiAvKiBQbHVnaW5CbG9ja2xp
c3QuaCAqLywKKwkJCQkxQUZGQzQ1MDFENUU3RUM3MDAyNjdBNjYgLyogUGx1Z2luQmxvY2tsaXN0
Lm1tICovLAogCQkJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFj
LmNwcCAqLywKIAkJCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1h
Yy5oICovLAogCQkJCTAwODFGRUZFMTZCMEEyQjYwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXhNYWMu
bW0gKi8sCkBAIC0yMDk4MCw4ICsyMDk1MSw4IEBACiAJCQkJQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3
MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovLAogCQkJCUJFODU1RjdGMDcwMUU4MzUwMDIz
OTc2OSAvKiBXZWJDb3JlVmlldy5oICovLAogCQkJCUJFODU2MDUxMDcwMUY5MTEwMDIzOTc2OSAv
KiBXZWJDb3JlVmlldy5tICovLAotCQkJCTFBRkZDNDUxMUQ1RTdFQzcwMDI2N0E2NiAvKiBXZWJH
TEJsYWNrbGlzdC5oICovLAotCQkJCTFBRkZDNDUyMUQ1RTdFQzcwMDI2N0E2NiAvKiBXZWJHTEJs
YWNrbGlzdC5tbSAqLywKKwkJCQkxQUZGQzQ1MTFENUU3RUM3MDAyNjdBNjYgLyogV2ViR0xCbG9j
a2xpc3QuaCAqLywKKwkJCQkxQUZGQzQ1MjFENUU3RUM3MDAyNjdBNjYgLyogV2ViR0xCbG9ja2xp
c3QubW0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCiAJCQkJQ0Q1ODk2RTAxQ0QyQjE1MTAwQjNC
Q0M4IC8qIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmggKi8sCkBAIC0zMjUzNiw3ICszMjUw
Nyw3IEBACiAJCQkJQ0RBMjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUEwRjFD
QkQ5Q0ZFMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTFBRkZDNDU5MUQ1RTg2NjEwMDI2N0E2NiAvKiBQbHVnaW5CbGFja2xp
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRkZDNDU5MUQ1RTg2NjEwMDI2N0E2NiAvKiBQbHVn
aW5CbG9ja2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRDU5MUIzMTY2OTdBNkMwMEU2QkYw
MiAvKiBQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgw
MDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzky
OTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3MDMs
NyArMzM2NzQsNyBAQAogCQkJCUQzRjNEMzZFMUE2OUI3RTAwMDU5RkMyQiAvKiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAz
OTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTQ3RTY2MTEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBRkZDNDU4MUQ1
RTg2NTUwMDI2N0E2NiAvKiBXZWJHTEJsYWNrbGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFG
RkM0NTgxRDVFODY1NTAwMjY3QTY2IC8qIFdlYkdMQmxvY2tsaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlDOTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQwOEIwMEU0MjBBMjgyNTkwMDA0QkMwQSAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0JsYWNrbGlzdFVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9CbGFja2xpc3RVcGRhdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZjMWYyNjA0ZmExZjhlY2QwNmY0MzAyZWE0YTljNTEzYTVkNDg5MzcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0JsYWNrbGlzdFVwZGF0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFBsdWdpbkJsYWNrbGlzdDsKLWNsYXNzIFdlYkdMQmxhY2tsaXN0OwotCi1j
bGFzcyBCbGFja2xpc3RVcGRhdGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplUXVldWUoKTsKLSAgICBzdGF0aWMgdm9pZCByZWxvYWRJZk5lY2Vzc2FyeSgpOwotCi0gICAg
c3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUoKSB7IHJldHVybiBzX3F1ZXVlOyB9Ci0gICAg
c3RhdGljIFBsdWdpbkJsYWNrbGlzdCogcGx1Z2luQmxhY2tsaXN0KCkgeyByZXR1cm4gc19wbHVn
aW5CbGFja2xpc3Q7IH0KLSAgICBzdGF0aWMgV2ViR0xCbGFja2xpc3QqIHdlYkdMQmxhY2tsaXN0
KCkgeyByZXR1cm4gc193ZWJHTEJsYWNrbGlzdDsgfTsKLQotcHJpdmF0ZToKLQotICAgIHN0YXRp
YyBOU0RpY3Rpb25hcnkgKnJlYWRCbGFja2xpc3REYXRhKCk7Ci0KLSAgICBzdGF0aWMgZGlzcGF0
Y2hfcXVldWVfdCBzX3F1ZXVlOwotICAgIHN0YXRpYyBQbHVnaW5CbGFja2xpc3QqIHNfcGx1Z2lu
QmxhY2tsaXN0OwotICAgIHN0YXRpYyBXZWJHTEJsYWNrbGlzdCogc193ZWJHTEJsYWNrbGlzdDsK
LX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQmxhY2tsaXN0VXBkYXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbGFj
a2xpc3RVcGRhdGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDhhNWQ4MWM3
NGEwNWI4YjQ4NjQ2YmMzNTlmOGM3MTY2NDkwNmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbGFja2xp
c3RVcGRhdGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQmxhY2tsaXN0VXBkYXRlci5oIgot
Ci0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJQbHVnaW5CbGFja2xpc3QuaCIKLSNpbXBv
cnQgIldlYkdMQmxhY2tsaXN0LmgiCi0jaW1wb3J0IDxzeXMvc3RhdC5oPgotI2ltcG9ydCA8c3lz
L3RpbWUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotLy8gVGhlIHRpbWUgYWZ0ZXIg
d2hpY2ggd2UnbGwgY2hlY2sgdGhlIGJsYWNrbGlzdCBkYXRhLgotc3RhdGljIHRpbWVfdCBibGFj
a2xpc3ROZXh0Q2hlY2tUaW1lOwotCi0vLyBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHdl
J2xsIGNoZWNrIGlmIHRoZSBibGFja2xpc3QgZGF0YSBoYXMgY2hhbmdlZC4KLWNvbnN0IHRpbWVf
dCBibGFja2xpc3RDaGVja1RpbWVJbnRlcnZhbCA9IDYwICogMTA7Ci0KLS8vIFRoZSB0aW1lIHdo
ZW4gd2UgbGFzdCByZS1wYXJzZWQgdGhlIGJsYWNrbGlzdCBmaWxlLgotc3RhdGljIHRpbWVfdCBi
bGFja2xpc3RVcGRhdGVUaW1lOwotCi0jaWYgSEFWRShSRUFEX09OTFlfU1lTVEVNX1ZPTFVNRSkK
LU5TU3RyaW5nICogY29uc3QgYmxhY2tsaXN0UGF0aCA9IEAiL0xpYnJhcnkvQXBwbGUvU3lzdGVt
L0xpYnJhcnkvQ29yZVNlcnZpY2VzL1hQcm90ZWN0LmJ1bmRsZS9Db250ZW50cy9SZXNvdXJjZXMv
WFByb3RlY3QubWV0YS5wbGlzdCI7Ci0jZWxzZQotTlNTdHJpbmcgKiBjb25zdCBibGFja2xpc3RQ
YXRoID0gQCIvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1hQcm90ZWN0LmJ1bmRsZS9Db250
ZW50cy9SZXNvdXJjZXMvWFByb3RlY3QubWV0YS5wbGlzdCI7Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1kaXNwYXRjaF9xdWV1ZV90IEJsYWNrbGlzdFVwZGF0ZXI6OnNfcXVldWU7
Ci0KLVBsdWdpbkJsYWNrbGlzdCogQmxhY2tsaXN0VXBkYXRlcjo6c19wbHVnaW5CbGFja2xpc3Qg
PSBudWxscHRyOwotV2ViR0xCbGFja2xpc3QqIEJsYWNrbGlzdFVwZGF0ZXI6OnNfd2ViR0xCbGFj
a2xpc3QgPSBudWxscHRyOwotCi1OU0RpY3Rpb25hcnkgKiBCbGFja2xpc3RVcGRhdGVyOjpyZWFk
QmxhY2tsaXN0RGF0YSgpCi17Ci0gICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOmJsYWNrbGlzdFBhdGhdOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KFtO
U1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6ZGF0YSBvcHRp
b25zOk5TUHJvcGVydHlMaXN0SW1tdXRhYmxlIGZvcm1hdDpudWxscHRyIGVycm9yOm51bGxwdHJd
KTsKLX0KLQotdm9pZCBCbGFja2xpc3RVcGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2FyeSgpCi17Ci0g
ICAgc3RydWN0IHRpbWV2YWwgdGltZVZhbDsKLSAgICBpZiAoIWdldHRpbWVvZmRheSgmdGltZVZh
bCwgTlVMTCkpIHsKLSAgICAgICAgaWYgKHRpbWVWYWwudHZfc2VjIDwgYmxhY2tsaXN0TmV4dENo
ZWNrVGltZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBibGFja2xpc3ROZXh0
Q2hlY2tUaW1lID0gdGltZVZhbC50dl9zZWMgKyBibGFja2xpc3RDaGVja1RpbWVJbnRlcnZhbDsK
LQotICAgIHN0cnVjdCBzdGF0IHN0YXRCdWY7Ci0gICAgaWYgKHN0YXQoW2JsYWNrbGlzdFBhdGgg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgJnN0YXRCdWYpID09IC0xKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoc3RhdEJ1Zi5zdF9tdGltZXNwZWMudHZfc2VjID09IGJsYWNrbGlzdFVw
ZGF0ZVRpbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBOU0RpY3Rpb25hcnkgKnByb3BlcnR5TGlz
dCA9IHJlYWRCbGFja2xpc3REYXRhKCk7Ci0gICAgaWYgKCFwcm9wZXJ0eUxpc3QpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChzX3BsdWdpbkJsYWNrbGlzdCkgewotICAgICAgICBkZWxldGUg
c19wbHVnaW5CbGFja2xpc3Q7Ci0gICAgICAgIHNfcGx1Z2luQmxhY2tsaXN0ID0gMDsKLSAgICB9
Ci0KLSAgICBpZiAoc193ZWJHTEJsYWNrbGlzdCkgewotICAgICAgICBkZWxldGUgc193ZWJHTEJs
YWNrbGlzdDsKLSAgICAgICAgc193ZWJHTEJsYWNrbGlzdCA9IDA7Ci0gICAgfQotCi0gICAgc19w
bHVnaW5CbGFja2xpc3QgPSBQbHVnaW5CbGFja2xpc3Q6OmNyZWF0ZShwcm9wZXJ0eUxpc3QpLnJl
bGVhc2UoKTsKLSAgICBzX3dlYkdMQmxhY2tsaXN0ID0gV2ViR0xCbGFja2xpc3Q6OmNyZWF0ZShw
cm9wZXJ0eUxpc3QpLnJlbGVhc2UoKTsKLQotICAgIGJsYWNrbGlzdFVwZGF0ZVRpbWUgPSBzdGF0
QnVmLnN0X210aW1lc3BlYy50dl9zZWM7Ci19Ci0KLXZvaWQgQmxhY2tsaXN0VXBkYXRlcjo6aW5p
dGlhbGl6ZVF1ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgc19xdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5CbGFja2xpc3QiLCAwKTsKLSAgICB9KTsKLX0KLQot
fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9j
a2xpc3RVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBk
YXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwMTYxZGVlZGNiNDQ2ODg5NjYzOTk0NGQzNDdhNmNiYzMyYzM2
ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2ts
aXN0VXBkYXRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsdWdpbkJsb2NrbGlzdDsKK2NsYXNz
IFdlYkdMQmxvY2tsaXN0OworCitjbGFzcyBCbG9ja2xpc3RVcGRhdGVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUXVldWUoKTsKKyAgICBzdGF0aWMgdm9pZCByZWxvYWRJ
Zk5lY2Vzc2FyeSgpOworCisgICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUoKSB7IHJl
dHVybiBzX3F1ZXVlOyB9CisgICAgc3RhdGljIFBsdWdpbkJsb2NrbGlzdCogcGx1Z2luQmxvY2ts
aXN0KCkgeyByZXR1cm4gc19wbHVnaW5CbG9ja2xpc3Q7IH0KKyAgICBzdGF0aWMgV2ViR0xCbG9j
a2xpc3QqIHdlYkdMQmxvY2tsaXN0KCkgeyByZXR1cm4gc193ZWJHTEJsb2NrbGlzdDsgfTsKKwor
cHJpdmF0ZToKKworICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnJlYWRCbG9ja2xpc3REYXRhKCk7
CisKKyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBzX3F1ZXVlOworICAgIHN0YXRpYyBQbHVn
aW5CbG9ja2xpc3QqIHNfcGx1Z2luQmxvY2tsaXN0OworICAgIHN0YXRpYyBXZWJHTEJsb2NrbGlz
dCogc193ZWJHTEJsb2NrbGlzdDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMTU5YTll
NTcyYzMyZjcyNzFhZWQzYTQ5NmMzZTY0MGVlZGNhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQpAQCAtMCwwICsxLDEx
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJCbG9j
a2xpc3RVcGRhdGVyLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIlBsdWdpbkJs
b2NrbGlzdC5oIgorI2ltcG9ydCAiV2ViR0xCbG9ja2xpc3QuaCIKKyNpbXBvcnQgPHN5cy9zdGF0
Lmg+CisjaW1wb3J0IDxzeXMvdGltZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisv
LyBUaGUgdGltZSBhZnRlciB3aGljaCB3ZSdsbCBjaGVjayB0aGUgYmxvY2tsaXN0IGRhdGEuCitz
dGF0aWMgdGltZV90IGJsb2NrbGlzdE5leHRDaGVja1RpbWU7CisKKy8vIFRoZSBudW1iZXIgb2Yg
c2Vjb25kcyBiZWZvcmUgd2UnbGwgY2hlY2sgaWYgdGhlIGJsb2NrbGlzdCBkYXRhIGhhcyBjaGFu
Z2VkLgorY29uc3QgdGltZV90IGJsb2NrbGlzdENoZWNrVGltZUludGVydmFsID0gNjAgKiAxMDsK
KworLy8gVGhlIHRpbWUgd2hlbiB3ZSBsYXN0IHJlLXBhcnNlZCB0aGUgYmxvY2tsaXN0IGZpbGUu
CitzdGF0aWMgdGltZV90IGJsb2NrbGlzdFVwZGF0ZVRpbWU7CisKKyNpZiBIQVZFKFJFQURfT05M
WV9TWVNURU1fVk9MVU1FKQorTlNTdHJpbmcgKiBjb25zdCBibG9ja2xpc3RQYXRoID0gQCIvTGli
cmFyeS9BcHBsZS9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvWFByb3RlY3QuYnVuZGxlL0Nv
bnRlbnRzL1Jlc291cmNlcy9YUHJvdGVjdC5tZXRhLnBsaXN0IjsKKyNlbHNlCitOU1N0cmluZyAq
IGNvbnN0IGJsb2NrbGlzdFBhdGggPSBAIi9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvWFBy
b3RlY3QuYnVuZGxlL0NvbnRlbnRzL1Jlc291cmNlcy9YUHJvdGVjdC5tZXRhLnBsaXN0IjsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Rpc3BhdGNoX3F1ZXVlX3QgQmxvY2tsaXN0
VXBkYXRlcjo6c19xdWV1ZTsKKworUGx1Z2luQmxvY2tsaXN0KiBCbG9ja2xpc3RVcGRhdGVyOjpz
X3BsdWdpbkJsb2NrbGlzdCA9IG51bGxwdHI7CitXZWJHTEJsb2NrbGlzdCogQmxvY2tsaXN0VXBk
YXRlcjo6c193ZWJHTEJsb2NrbGlzdCA9IG51bGxwdHI7CisKK05TRGljdGlvbmFyeSAqIEJsb2Nr
bGlzdFVwZGF0ZXI6OnJlYWRCbG9ja2xpc3REYXRhKCkKK3sKKyAgICBOU0RhdGEgKmRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6YmxvY2tsaXN0UGF0aF07CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0
PE5TRGljdGlvbmFyeT4oW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBwcm9wZXJ0eUxpc3RX
aXRoRGF0YTpkYXRhIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0Om51bGxw
dHIgZXJyb3I6bnVsbHB0cl0pOworfQorCit2b2lkIEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElm
TmVjZXNzYXJ5KCkKK3sKKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lVmFsOworICAgIGlmICghZ2V0
dGltZW9mZGF5KCZ0aW1lVmFsLCBOVUxMKSkgeworICAgICAgICBpZiAodGltZVZhbC50dl9zZWMg
PCBibG9ja2xpc3ROZXh0Q2hlY2tUaW1lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGJsb2NrbGlzdE5leHRDaGVja1RpbWUgPSB0aW1lVmFsLnR2X3NlYyArIGJsb2NrbGlzdENo
ZWNrVGltZUludGVydmFsOworCisgICAgc3RydWN0IHN0YXQgc3RhdEJ1ZjsKKyAgICBpZiAoc3Rh
dChbYmxvY2tsaXN0UGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAmc3RhdEJ1ZikgPT0g
LTEpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdGF0QnVmLnN0X210aW1lc3BlYy50dl9z
ZWMgPT0gYmxvY2tsaXN0VXBkYXRlVGltZSkKKyAgICAgICAgcmV0dXJuOworICAgIE5TRGljdGlv
bmFyeSAqcHJvcGVydHlMaXN0ID0gcmVhZEJsb2NrbGlzdERhdGEoKTsKKyAgICBpZiAoIXByb3Bl
cnR5TGlzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNfcGx1Z2luQmxvY2tsaXN0KSB7
CisgICAgICAgIGRlbGV0ZSBzX3BsdWdpbkJsb2NrbGlzdDsKKyAgICAgICAgc19wbHVnaW5CbG9j
a2xpc3QgPSAwOworICAgIH0KKworICAgIGlmIChzX3dlYkdMQmxvY2tsaXN0KSB7CisgICAgICAg
IGRlbGV0ZSBzX3dlYkdMQmxvY2tsaXN0OworICAgICAgICBzX3dlYkdMQmxvY2tsaXN0ID0gMDsK
KyAgICB9CisKKyAgICBzX3BsdWdpbkJsb2NrbGlzdCA9IFBsdWdpbkJsb2NrbGlzdDo6Y3JlYXRl
KHByb3BlcnR5TGlzdCkucmVsZWFzZSgpOworICAgIHNfd2ViR0xCbG9ja2xpc3QgPSBXZWJHTEJs
b2NrbGlzdDo6Y3JlYXRlKHByb3BlcnR5TGlzdCkucmVsZWFzZSgpOworCisgICAgYmxvY2tsaXN0
VXBkYXRlVGltZSA9IHN0YXRCdWYuc3RfbXRpbWVzcGVjLnR2X3NlYzsKK30KKwordm9pZCBCbG9j
a2xpc3RVcGRhdGVyOjppbml0aWFsaXplUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBzX3F1ZXVl
ID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkJsb2NrbGlzdCIsIDAp
OworICAgIH0pOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsdWdpbkJsYWNrbGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsdWdpbkJsYWNrbGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjcy
NTA5NzQ3ZDRjNmJiN2VkYjIzNTgwZmJhZDAyOTI5ZGQwOTc3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bHVnaW5CbGFja2xpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSA8
bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBOU0FycmF5
OwotT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7Ci1PQkpDX0NMQVNTIE5TU2V0OwotT0JKQ19DTEFT
UyBOU1N0cmluZzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbHVnaW5CbGFja2xp
c3QgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgTG9hZFBvbGljeSB7Ci0gICAgICAgIExvYWRO
b3JtYWxseSwKLSAgICAgICAgQmxvY2tlZEZvclNlY3VyaXR5LAotICAgICAgICBCbG9ja2VkRm9y
Q29tcGF0aWJpbGl0eSwKLSAgICB9OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIExvYWRQ
b2xpY3kgbG9hZFBvbGljeUZvclBsdWdpblZlcnNpb24oTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIsIE5TU3RyaW5nICpidW5kbGVWZXJzaW9uU3RyaW5nKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc1BsdWdpblVwZGF0ZUF2YWlsYWJsZShOU1N0cmluZyAqYnVuZGxlSWRlbnRp
Zmllcik7Ci0KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsYWNrbGlzdD4gY3Jl
YXRlKE5TRGljdGlvbmFyeSAqKTsKLSAgICB+UGx1Z2luQmxhY2tsaXN0KCk7Ci0KLSAgICBzdGF0
aWMgTlNBcnJheSAqc3BsaXRPU1ZlcnNpb24oTlNTdHJpbmcgKm9zVmVyc2lvbik7Ci0KLSAgICBM
b2FkUG9saWN5IGxvYWRQb2xpY3lGb3JQbHVnaW4oTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIs
IE5TU3RyaW5nICpidW5kbGVWZXJzaW9uU3RyaW5nKSBjb25zdDsKLSAgICBib29sIGlzVXBkYXRl
QXZhaWxhYmxlKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyKSBjb25zdDsKLQotcHJpdmF0ZToK
LSAgICBQbHVnaW5CbGFja2xpc3QoTlNEaWN0aW9uYXJ5ICpidW5kbGVJRFRvTWluaW11bVNlY3Vy
ZVZlcnNpb24sIE5TRGljdGlvbmFyeSAqYnVuZGxlSURUb01pbmltdW1Db21wYXRpYmxlVmVyc2lv
biwgTlNEaWN0aW9uYXJ5ICpidW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zLCBOU1NldCAqYnVuZGxl
SURzV2l0aEF2YWlsYWJsZVVwZGF0ZXMpOwotCi0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
bV9idW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gbV9idW5kbGVJRFRvTWluaW11bUNvbXBhdGlibGVWZXJzaW9uOwotICAgIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IG1fYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9uczsKLSAgICBSZXRhaW5Q
dHI8TlNTZXQ+IG1fYnVuZGxlSURzV2l0aEF2YWlsYWJsZVVwZGF0ZXM7Ci19OwotCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsYWNr
bGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbGFja2xpc3QubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MTViYmE0OGU3N2M2MmNmMjJkNjcwMDU5
MjVlNDVkMDljOGM0M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsYWNrbGlzdC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIlBsdWdpbkJsYWNrbGlzdC5oIgotCi0jaWYgUExBVEZPUk0oTUFD
KQotCi0jaW1wb3J0ICJCbGFja2xpc3RVcGRhdGVyLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NmL0NG
VXRpbGl0aWVzU1BJLmg+Ci0jaW1wb3J0IDxzeXMvc3RhdC5oPgotI2ltcG9ydCA8c3lzL3RpbWUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QbHVnaW5CbGFja2xpc3Q6OkxvYWRQb2xpY3kg
UGx1Z2luQmxhY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihOU1N0cmluZyAqYnVu
ZGxlSWRlbnRpZmllciwgTlNTdHJpbmcgKmJ1bmRsZVZlcnNpb25TdHJpbmcpCi17Ci0gICAgQmxh
Y2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIFBsdWdpbkJs
YWNrbGlzdDo6TG9hZFBvbGljeSBsb2FkUG9saWN5ID0gTG9hZFBvbGljeTo6TG9hZE5vcm1hbGx5
OwotICAgIGRpc3BhdGNoX3N5bmMoQmxhY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsKLSAgICAg
ICAgQmxhY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBQbHVn
aW5CbGFja2xpc3QqIHBsdWdpbkJsYWNrbGlzdCA9IEJsYWNrbGlzdFVwZGF0ZXI6OnBsdWdpbkJs
YWNrbGlzdCgpOwotICAgICAgICBpZiAocGx1Z2luQmxhY2tsaXN0KQotICAgICAgICAgICAgbG9h
ZFBvbGljeSA9IHBsdWdpbkJsYWNrbGlzdC0+bG9hZFBvbGljeUZvclBsdWdpbihidW5kbGVJZGVu
dGlmaWVyLCBidW5kbGVWZXJzaW9uU3RyaW5nKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBsb2Fk
UG9saWN5OwotfQotCi1ib29sIFBsdWdpbkJsYWNrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFi
bGUoTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIpCi17Ci0gICAgQmxhY2tsaXN0VXBkYXRlcjo6
aW5pdGlhbGl6ZVF1ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNQbHVnaW5VcGRhdGVBdmFp
bGFibGUgPSBmYWxzZTsKLSAgICBkaXNwYXRjaF9zeW5jKEJsYWNrbGlzdFVwZGF0ZXI6OnF1ZXVl
KCksIF57Ci0gICAgICAgIEJsYWNrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCk7Ci0K
LSAgICAgICAgUGx1Z2luQmxhY2tsaXN0KiBwbHVnaW5CbGFja2xpc3QgPSBCbGFja2xpc3RVcGRh
dGVyOjpwbHVnaW5CbGFja2xpc3QoKTsKLSAgICAgICAgaWYgKHBsdWdpbkJsYWNrbGlzdCkKLSAg
ICAgICAgICAgIGlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlID0gcGx1Z2luQmxhY2tsaXN0LT5pc1Vw
ZGF0ZUF2YWlsYWJsZShidW5kbGVJZGVudGlmaWVyKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBp
c1BsdWdpblVwZGF0ZUF2YWlsYWJsZTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsYWNr
bGlzdD4gUGx1Z2luQmxhY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0eUxpc3Qp
Ci17Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gX0NGQ29w
eVN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KCk7Ci0gICAgQ0ZTdHJpbmdSZWYgb3NWZXJzaW9uID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5LCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7Ci0KLSAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbcHJvcGVydHlMaXN0IG9iamVjdEZvcktleTpA
IlBsdWdJbkJsYWNrbGlzdCJdOwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYnVuZGxlSURU
b01pbmltdW1TZWN1cmVWZXJzaW9uID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07
Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYnVuZGxlSURUb01pbmltdW1Db21wYXRpYmxlVmVy
c2lvbiA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKmJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMgPSBbTlNNdXRhYmxlRGljdGlvbmFy
eSBkaWN0aW9uYXJ5XTsKLSAgICBOU011dGFibGVTZXQgKmJ1bmRsZUlEc1dpdGhBdmFpbGFibGVV
cGRhdGVzID0gW05TTXV0YWJsZVNldCBzZXRdOwotICAgIAotICAgIGZvciAoTlNTdHJpbmcgKm9z
VmVyc2lvbkNvbXBvbmVudCBpbiBzcGxpdE9TVmVyc2lvbigoX19icmlkZ2UgTlNTdHJpbmcgKilv
c1ZlcnNpb24pKSB7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqYnVuZGxlSURzID0gW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5Om9zVmVyc2lvbkNvbXBvbmVudF07Ci0gICAgICAgIGlmICghYnVuZGxl
SURzKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChOU1N0cmluZyAqYnVu
ZGxlSUQgaW4gYnVuZGxlSURzKSB7Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnZlcnNpb25J
bmZvID0gW2J1bmRsZUlEcyBvYmplY3RGb3JLZXk6YnVuZGxlSURdOwotICAgICAgICAgICAgYXNz
ZXJ0KHZlcnNpb25JbmZvKTsKLQotICAgICAgICAgICAgaWYgKCFbdmVyc2lvbkluZm8gaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIFtidW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24gcmVtb3ZlT2Jq
ZWN0Rm9yS2V5OmJ1bmRsZUlEXTsKLSAgICAgICAgICAgIFtidW5kbGVJRFRvTWluaW11bUNvbXBh
dGlibGVWZXJzaW9uIHJlbW92ZU9iamVjdEZvcktleTpidW5kbGVJRF07Ci0gICAgICAgICAgICBb
YnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucyByZW1vdmVPYmplY3RGb3JLZXk6YnVuZGxlSURdOwot
Ci0gICAgICAgICAgICBpZiAoTlNBcnJheSAqYmxvY2tlZFZlcnNpb25zID0gW3ZlcnNpb25JbmZv
IG9iamVjdEZvcktleTpAIkJsb2NrZWRQbHVnSW5CdW5kbGVWZXJzaW9ucyJdKQotICAgICAgICAg
ICAgICAgIFtidW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zIHNldE9iamVjdDpibG9ja2VkVmVyc2lv
bnMgZm9yS2V5OmJ1bmRsZUlEXTsKLQotICAgICAgICAgICAgaWYgKE5TU3RyaW5nICptaW5pbXVt
U2VjdXJlVmVyc2lvbiA9IFt2ZXJzaW9uSW5mbyBvYmplY3RGb3JLZXk6QCJNaW5pbXVtUGx1Z0lu
QnVuZGxlVmVyc2lvbiJdKQotICAgICAgICAgICAgICAgIFtidW5kbGVJRFRvTWluaW11bVNlY3Vy
ZVZlcnNpb24gc2V0T2JqZWN0Om1pbmltdW1TZWN1cmVWZXJzaW9uIGZvcktleTpidW5kbGVJRF07
Ci0KLSAgICAgICAgICAgIGlmIChOU1N0cmluZyAqbWluaW11bUNvbXBhdGlibGVWZXJzaW9uID0g
W3ZlcnNpb25JbmZvIG9iamVjdEZvcktleTpAIk1pbmltdW1Db21wYXRpYmxlUGx1Z0luQnVuZGxl
VmVyc2lvbiJdKQotICAgICAgICAgICAgICAgIFtidW5kbGVJRFRvTWluaW11bUNvbXBhdGlibGVW
ZXJzaW9uIHNldE9iamVjdDptaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24gZm9yS2V5OmJ1bmRsZUlE
XTsKLQotICAgICAgICAgICAgaWYgKE5TTnVtYmVyICp1cGRhdGVBdmFpbGFibGUgPSBbdmVyc2lv
bkluZm8gb2JqZWN0Rm9yS2V5OkAiUGx1Z0luVXBkYXRlQXZhaWxhYmxlIl0pIHsKLSAgICAgICAg
ICAgICAgICAvLyBBIG1pc3NpbmcgUGx1Z0luVXBkYXRlQXZhaWxhYmxlIGtleSBtZWFucyB0aGF0
IHRoZXJlIGlzIGEgcGx1Zy1pbiB1cGRhdGUgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIGlm
ICghdXBkYXRlQXZhaWxhYmxlIHx8IFt1cGRhdGVBdmFpbGFibGUgYm9vbFZhbHVlXSkKLSAgICAg
ICAgICAgICAgICAgICAgW2J1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzIGFkZE9iamVjdDpi
dW5kbGVJRF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDRlJlbGVh
c2Uoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkpOwotCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxQbHVnaW5CbGFja2xpc3Q+KG5ldyBQbHVnaW5CbGFja2xpc3QoYnVuZGxlSURUb01pbmltdW1T
ZWN1cmVWZXJzaW9uLCBidW5kbGVJRFRvTWluaW11bUNvbXBhdGlibGVWZXJzaW9uLCBidW5kbGVJ
RFRvQmxvY2tlZFZlcnNpb25zLCBidW5kbGVJRHNXaXRoQXZhaWxhYmxlVXBkYXRlcykpOwotfQot
Ci1QbHVnaW5CbGFja2xpc3Q6On5QbHVnaW5CbGFja2xpc3QoKQotewotfQotCi1OU0FycmF5ICpQ
bHVnaW5CbGFja2xpc3Q6OnNwbGl0T1NWZXJzaW9uKE5TU3RyaW5nICpvc1ZlcnNpb24pCi17Ci0g
ICAgTlNBcnJheSAqY29tcG9uZW50cyA9IFtvc1ZlcnNpb24gY29tcG9uZW50c1NlcGFyYXRlZEJ5
U3RyaW5nOkAiLiJdOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVB
cnJheSBhcnJheV07Ci0KLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbY29tcG9uZW50
cyBjb3VudF07ICsraSkgewotICAgICAgICBOU1N0cmluZyAqdmVyc2lvblN0cmluZyA9IFtbY29t
cG9uZW50cyBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBpICsgMSldIGNvbXBvbmVu
dHNKb2luZWRCeVN0cmluZzpAIi4iXTsKLQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDp2ZXJz
aW9uU3RyaW5nXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVBsdWdpbkJs
YWNrbGlzdDo6TG9hZFBvbGljeSBQbHVnaW5CbGFja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW4o
TlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIsIE5TU3RyaW5nICpidW5kbGVWZXJzaW9uU3RyaW5n
KSBjb25zdAotewotICAgIGlmICghYnVuZGxlSWRlbnRpZmllciB8fCAhYnVuZGxlVmVyc2lvblN0
cmluZykKLSAgICAgICAgcmV0dXJuIExvYWRQb2xpY3k6OkxvYWROb3JtYWxseTsKLQotICAgIC8v
IEZpcnN0LCBjaGVjayBmb3IgZXhwbGljaXRseSBibG9ja2VkIHZlcnNpb25zLgotICAgIGZvciAo
TlNTdHJpbmcgKmJsb2NrZWRWZXJzaW9uIGluIFttX2J1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMg
b2JqZWN0Rm9yS2V5OmJ1bmRsZUlkZW50aWZpZXJdKSB7Ci0gICAgICAgIGlmIChbYmxvY2tlZFZl
cnNpb24gaXNFcXVhbFRvU3RyaW5nOmJ1bmRsZVZlcnNpb25TdHJpbmddKQotICAgICAgICAgICAg
cmV0dXJuIExvYWRQb2xpY3k6OkJsb2NrZWRGb3JTZWN1cml0eTsKLSAgICB9Ci0KLSAgICAvLyBU
aGVuLCBjaGVjayBpZiB0aGVyZSdzIGEgZm9yY2VkIG1pbmltdW0gdmVyc2lvbiBmb3Igc2VjdXJp
dHkgaXNzdWVzLgotICAgIGlmIChOU1N0cmluZyAqbWluaW11bVNlY3VyZVZlcnNpb24gPSBbbV9i
dW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24gb2JqZWN0Rm9yS2V5OmJ1bmRsZUlkZW50aWZp
ZXJdKSB7Ci0gICAgICAgIGlmIChbYnVuZGxlVmVyc2lvblN0cmluZyBjb21wYXJlOm1pbmltdW1T
ZWN1cmVWZXJzaW9uIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09yZGVyZWRBc2NlbmRp
bmcpCi0gICAgICAgICAgICByZXR1cm4gTG9hZFBvbGljeTo6QmxvY2tlZEZvclNlY3VyaXR5Owot
ICAgIH0KLQotICAgIC8vIFRoZW4sIGNoZWNrIGlmIHRoZXJlJ3MgYSBmb3JjZWQgbWluaW11bSB2
ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5IGlzc3Vlcy4KLSAgICBpZiAoTlNTdHJpbmcgKm1pbmlt
dW1Db21wYXRpYmxlVmVyc2lvbiA9IFttX2J1bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNp
b24gb2JqZWN0Rm9yS2V5OmJ1bmRsZUlkZW50aWZpZXJdKSB7Ci0gICAgICAgIGlmIChbYnVuZGxl
VmVyc2lvblN0cmluZyBjb21wYXJlOm1pbmltdW1Db21wYXRpYmxlVmVyc2lvbiBvcHRpb25zOk5T
TnVtZXJpY1NlYXJjaF0gPT0gTlNPcmRlcmVkQXNjZW5kaW5nKQotICAgICAgICAgICAgcmV0dXJu
IExvYWRQb2xpY3k6OkJsb2NrZWRGb3JDb21wYXRpYmlsaXR5OwotICAgIH0KLQotICAgIHJldHVy
biBMb2FkUG9saWN5OjpMb2FkTm9ybWFsbHk7Ci19Ci0KLWJvb2wgUGx1Z2luQmxhY2tsaXN0Ojpp
c1VwZGF0ZUF2YWlsYWJsZShOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gW21fYnVuZGxlSURzV2l0aEF2YWlsYWJsZVVwZGF0ZXMgY29udGFpbnNPYmplY3Q6
YnVuZGxlSWRlbnRpZmllcl07Ci19Ci0KLVBsdWdpbkJsYWNrbGlzdDo6UGx1Z2luQmxhY2tsaXN0
KE5TRGljdGlvbmFyeSAqYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uLCBOU0RpY3Rpb25h
cnkgKmJ1bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24sIE5TRGljdGlvbmFyeSAqYnVu
ZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgTlNTZXQgKmJ1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRh
dGVzKQotICAgIDogbV9idW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24geyBhZG9wdE5TKFti
dW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24gY29weV0pIH0KLSAgICAsIG1fYnVuZGxlSURU
b01pbmltdW1Db21wYXRpYmxlVmVyc2lvbiB7IGFkb3B0TlMoW2J1bmRsZUlEVG9NaW5pbXVtQ29t
cGF0aWJsZVZlcnNpb24gY29weV0pIH0KLSAgICAsIG1fYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9u
cyB7IGFkb3B0TlMoW2J1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMgY29weV0pIH0KLSAgICAsIG1f
YnVuZGxlSURzV2l0aEF2YWlsYWJsZVVwZGF0ZXMgeyBhZG9wdE5TKFtidW5kbGVJRHNXaXRoQXZh
aWxhYmxlVXBkYXRlcyBjb3B5XSkgfQotewotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExOTRhMTI5
NmZiOTZjOWU1MGQ5NTFiZGU2YzE1NWQzMDllZDcyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0LmgKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisK
KyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NM
QVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKK09CSkNfQ0xBU1MgTlNTZXQ7
CitPQkpDX0NMQVNTIE5TU3RyaW5nOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBs
dWdpbkJsb2NrbGlzdCB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBMb2FkUG9saWN5IHsKKyAg
ICAgICAgTG9hZE5vcm1hbGx5LAorICAgICAgICBCbG9ja2VkRm9yU2VjdXJpdHksCisgICAgICAg
IEJsb2NrZWRGb3JDb21wYXRpYmlsaXR5LAorICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgTG9hZFBvbGljeSBsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihOU1N0cmluZyAqYnVu
ZGxlSWRlbnRpZmllciwgTlNTdHJpbmcgKmJ1bmRsZVZlcnNpb25TdHJpbmcpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlKE5TU3RyaW5nICpi
dW5kbGVJZGVudGlmaWVyKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxv
Y2tsaXN0PiBjcmVhdGUoTlNEaWN0aW9uYXJ5ICopOworICAgIH5QbHVnaW5CbG9ja2xpc3QoKTsK
KworICAgIHN0YXRpYyBOU0FycmF5ICpzcGxpdE9TVmVyc2lvbihOU1N0cmluZyAqb3NWZXJzaW9u
KTsKKworICAgIExvYWRQb2xpY3kgbG9hZFBvbGljeUZvclBsdWdpbihOU1N0cmluZyAqYnVuZGxl
SWRlbnRpZmllciwgTlNTdHJpbmcgKmJ1bmRsZVZlcnNpb25TdHJpbmcpIGNvbnN0OworICAgIGJv
b2wgaXNVcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFBsdWdpbkJsb2NrbGlzdChOU0RpY3Rpb25hcnkgKmJ1bmRsZUlEVG9N
aW5pbXVtU2VjdXJlVmVyc2lvbiwgTlNEaWN0aW9uYXJ5ICpidW5kbGVJRFRvTWluaW11bUNvbXBh
dGlibGVWZXJzaW9uLCBOU0RpY3Rpb25hcnkgKmJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMsIE5T
U2V0ICpidW5kbGVJRHNXaXRoQXZhaWxhYmxlVXBkYXRlcyk7CisKKyAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBtX2J1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbjsKKyAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiBtX2J1bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb247Cisg
ICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbV9idW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zOwor
ICAgIFJldGFpblB0cjxOU1NldD4gbV9idW5kbGVJRHNXaXRoQXZhaWxhYmxlVXBkYXRlczsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGx1Z2luQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJs
b2NrbGlzdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODBiNGFmZWM3NjFkODc5ODdmZjkxMjA3MzQ2MGI5Mzll
NDBmNzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
dWdpbkJsb2NrbGlzdC5tbQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbHVnaW5CbG9ja2xpc3QuaCIKKworI2lmIFBMQVRG
T1JNKE1BQykKKworI2ltcG9ydCAiQmxvY2tsaXN0VXBkYXRlci5oIgorI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBvcnQgPHN5
cy90aW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGx1Z2luQmxvY2tsaXN0OjpMb2Fk
UG9saWN5IFBsdWdpbkJsb2NrbGlzdDo6bG9hZFBvbGljeUZvclBsdWdpblZlcnNpb24oTlNTdHJp
bmcgKmJ1bmRsZUlkZW50aWZpZXIsIE5TU3RyaW5nICpidW5kbGVWZXJzaW9uU3RyaW5nKQorewor
ICAgIEJsb2NrbGlzdFVwZGF0ZXI6OmluaXRpYWxpemVRdWV1ZSgpOworCisgICAgX19ibG9jayBQ
bHVnaW5CbG9ja2xpc3Q6OkxvYWRQb2xpY3kgbG9hZFBvbGljeSA9IExvYWRQb2xpY3k6OkxvYWRO
b3JtYWxseTsKKyAgICBkaXNwYXRjaF9zeW5jKEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCksIF57
CisgICAgICAgIEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCk7CisKKyAgICAg
ICAgUGx1Z2luQmxvY2tsaXN0KiBwbHVnaW5CbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjpw
bHVnaW5CbG9ja2xpc3QoKTsKKyAgICAgICAgaWYgKHBsdWdpbkJsb2NrbGlzdCkKKyAgICAgICAg
ICAgIGxvYWRQb2xpY3kgPSBwbHVnaW5CbG9ja2xpc3QtPmxvYWRQb2xpY3lGb3JQbHVnaW4oYnVu
ZGxlSWRlbnRpZmllciwgYnVuZGxlVmVyc2lvblN0cmluZyk7CisgICAgfSk7CisKKyAgICByZXR1
cm4gbG9hZFBvbGljeTsKK30KKworYm9vbCBQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRl
QXZhaWxhYmxlKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyKQoreworICAgIEJsb2NrbGlzdFVw
ZGF0ZXI6OmluaXRpYWxpemVRdWV1ZSgpOworCisgICAgX19ibG9jayBib29sIGlzUGx1Z2luVXBk
YXRlQXZhaWxhYmxlID0gZmFsc2U7CisgICAgZGlzcGF0Y2hfc3luYyhCbG9ja2xpc3RVcGRhdGVy
OjpxdWV1ZSgpLCBeeworICAgICAgICBCbG9ja2xpc3RVcGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2Fy
eSgpOworCisgICAgICAgIFBsdWdpbkJsb2NrbGlzdCogcGx1Z2luQmxvY2tsaXN0ID0gQmxvY2ts
aXN0VXBkYXRlcjo6cGx1Z2luQmxvY2tsaXN0KCk7CisgICAgICAgIGlmIChwbHVnaW5CbG9ja2xp
c3QpCisgICAgICAgICAgICBpc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSA9IHBsdWdpbkJsb2NrbGlz
dC0+aXNVcGRhdGVBdmFpbGFibGUoYnVuZGxlSWRlbnRpZmllcik7CisgICAgfSk7CisKKyAgICBy
ZXR1cm4gaXNQbHVnaW5VcGRhdGVBdmFpbGFibGU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbHVn
aW5CbG9ja2xpc3Q+IFBsdWdpbkJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVy
dHlMaXN0KQoreworICAgIENGRGljdGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9
IF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpOworICAgIENGU3RyaW5nUmVmIG9zVmVy
c2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0
ZW1WZXJzaW9uRGljdGlvbmFyeSwgX2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkp
OworCisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3Byb3BlcnR5TGlzdCBvYmplY3RG
b3JLZXk6QCJQbHVnSW5CbG9ja2xpc3QiXTsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmJ1
bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rp
b25hcnldOworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmJ1bmRsZUlEVG9NaW5pbXVtQ29tcGF0
aWJsZVZlcnNpb24gPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpidW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zID0gW05TTXV0YWJsZURp
Y3Rpb25hcnkgZGljdGlvbmFyeV07CisgICAgTlNNdXRhYmxlU2V0ICpidW5kbGVJRHNXaXRoQXZh
aWxhYmxlVXBkYXRlcyA9IFtOU011dGFibGVTZXQgc2V0XTsKKyAgICAKKyAgICBmb3IgKE5TU3Ry
aW5nICpvc1ZlcnNpb25Db21wb25lbnQgaW4gc3BsaXRPU1ZlcnNpb24oKF9fYnJpZGdlIE5TU3Ry
aW5nICopb3NWZXJzaW9uKSkgeworICAgICAgICBOU0RpY3Rpb25hcnkgKmJ1bmRsZUlEcyA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpvc1ZlcnNpb25Db21wb25lbnRdOworICAgICAgICBpZiAo
IWJ1bmRsZUlEcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoTlNTdHJp
bmcgKmJ1bmRsZUlEIGluIGJ1bmRsZUlEcykgeworICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp2
ZXJzaW9uSW5mbyA9IFtidW5kbGVJRHMgb2JqZWN0Rm9yS2V5OmJ1bmRsZUlEXTsKKyAgICAgICAg
ICAgIGFzc2VydCh2ZXJzaW9uSW5mbyk7CisKKyAgICAgICAgICAgIGlmICghW3ZlcnNpb25JbmZv
IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBbYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uIHJl
bW92ZU9iamVjdEZvcktleTpidW5kbGVJRF07CisgICAgICAgICAgICBbYnVuZGxlSURUb01pbmlt
dW1Db21wYXRpYmxlVmVyc2lvbiByZW1vdmVPYmplY3RGb3JLZXk6YnVuZGxlSURdOworICAgICAg
ICAgICAgW2J1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OmJ1bmRs
ZUlEXTsKKworICAgICAgICAgICAgaWYgKE5TQXJyYXkgKmJsb2NrZWRWZXJzaW9ucyA9IFt2ZXJz
aW9uSW5mbyBvYmplY3RGb3JLZXk6QCJCbG9ja2VkUGx1Z0luQnVuZGxlVmVyc2lvbnMiXSkKKyAg
ICAgICAgICAgICAgICBbYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucyBzZXRPYmplY3Q6YmxvY2tl
ZFZlcnNpb25zIGZvcktleTpidW5kbGVJRF07CisKKyAgICAgICAgICAgIGlmIChOU1N0cmluZyAq
bWluaW11bVNlY3VyZVZlcnNpb24gPSBbdmVyc2lvbkluZm8gb2JqZWN0Rm9yS2V5OkAiTWluaW11
bVBsdWdJbkJ1bmRsZVZlcnNpb24iXSkKKyAgICAgICAgICAgICAgICBbYnVuZGxlSURUb01pbmlt
dW1TZWN1cmVWZXJzaW9uIHNldE9iamVjdDptaW5pbXVtU2VjdXJlVmVyc2lvbiBmb3JLZXk6YnVu
ZGxlSURdOworCisgICAgICAgICAgICBpZiAoTlNTdHJpbmcgKm1pbmltdW1Db21wYXRpYmxlVmVy
c2lvbiA9IFt2ZXJzaW9uSW5mbyBvYmplY3RGb3JLZXk6QCJNaW5pbXVtQ29tcGF0aWJsZVBsdWdJ
bkJ1bmRsZVZlcnNpb24iXSkKKyAgICAgICAgICAgICAgICBbYnVuZGxlSURUb01pbmltdW1Db21w
YXRpYmxlVmVyc2lvbiBzZXRPYmplY3Q6bWluaW11bUNvbXBhdGlibGVWZXJzaW9uIGZvcktleTpi
dW5kbGVJRF07CisKKyAgICAgICAgICAgIGlmIChOU051bWJlciAqdXBkYXRlQXZhaWxhYmxlID0g
W3ZlcnNpb25JbmZvIG9iamVjdEZvcktleTpAIlBsdWdJblVwZGF0ZUF2YWlsYWJsZSJdKSB7Cisg
ICAgICAgICAgICAgICAgLy8gQSBtaXNzaW5nIFBsdWdJblVwZGF0ZUF2YWlsYWJsZSBrZXkgbWVh
bnMgdGhhdCB0aGVyZSBpcyBhIHBsdWctaW4gdXBkYXRlIGF2YWlsYWJsZS4KKyAgICAgICAgICAg
ICAgICBpZiAoIXVwZGF0ZUF2YWlsYWJsZSB8fCBbdXBkYXRlQXZhaWxhYmxlIGJvb2xWYWx1ZV0p
CisgICAgICAgICAgICAgICAgICAgIFtidW5kbGVJRHNXaXRoQXZhaWxhYmxlVXBkYXRlcyBhZGRP
YmplY3Q6YnVuZGxlSURdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
Q0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKKworICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PihuZXcgUGx1Z2luQmxvY2tsaXN0KGJ1bmRsZUlEVG9N
aW5pbXVtU2VjdXJlVmVyc2lvbiwgYnVuZGxlSURUb01pbmltdW1Db21wYXRpYmxlVmVyc2lvbiwg
YnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgYnVuZGxlSURzV2l0aEF2YWlsYWJsZVVwZGF0ZXMp
KTsKK30KKworUGx1Z2luQmxvY2tsaXN0Ojp+UGx1Z2luQmxvY2tsaXN0KCkKK3sKK30KKworTlNB
cnJheSAqUGx1Z2luQmxvY2tsaXN0OjpzcGxpdE9TVmVyc2lvbihOU1N0cmluZyAqb3NWZXJzaW9u
KQoreworICAgIE5TQXJyYXkgKmNvbXBvbmVudHMgPSBbb3NWZXJzaW9uIGNvbXBvbmVudHNTZXBh
cmF0ZWRCeVN0cmluZzpAIi4iXTsKKworICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW2Nv
bXBvbmVudHMgY291bnRdOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcgKnZlcnNpb25TdHJpbmcg
PSBbW2NvbXBvbmVudHMgc3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgaSArIDEpXSBj
b21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIuIl07CisKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmpl
Y3Q6dmVyc2lvblN0cmluZ107CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitQ
bHVnaW5CbG9ja2xpc3Q6OkxvYWRQb2xpY3kgUGx1Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9y
UGx1Z2luKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyLCBOU1N0cmluZyAqYnVuZGxlVmVyc2lv
blN0cmluZykgY29uc3QKK3sKKyAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIgfHwgIWJ1bmRsZVZl
cnNpb25TdHJpbmcpCisgICAgICAgIHJldHVybiBMb2FkUG9saWN5OjpMb2FkTm9ybWFsbHk7CisK
KyAgICAvLyBGaXJzdCwgY2hlY2sgZm9yIGV4cGxpY2l0bHkgYmxvY2tlZCB2ZXJzaW9ucy4KKyAg
ICBmb3IgKE5TU3RyaW5nICpibG9ja2VkVmVyc2lvbiBpbiBbbV9idW5kbGVJRFRvQmxvY2tlZFZl
cnNpb25zIG9iamVjdEZvcktleTpidW5kbGVJZGVudGlmaWVyXSkgeworICAgICAgICBpZiAoW2Js
b2NrZWRWZXJzaW9uIGlzRXF1YWxUb1N0cmluZzpidW5kbGVWZXJzaW9uU3RyaW5nXSkKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkUG9saWN5OjpCbG9ja2VkRm9yU2VjdXJpdHk7CisgICAgfQorCisg
ICAgLy8gVGhlbiwgY2hlY2sgaWYgdGhlcmUncyBhIGZvcmNlZCBtaW5pbXVtIHZlcnNpb24gZm9y
IHNlY3VyaXR5IGlzc3Vlcy4KKyAgICBpZiAoTlNTdHJpbmcgKm1pbmltdW1TZWN1cmVWZXJzaW9u
ID0gW21fYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uIG9iamVjdEZvcktleTpidW5kbGVJ
ZGVudGlmaWVyXSkgeworICAgICAgICBpZiAoW2J1bmRsZVZlcnNpb25TdHJpbmcgY29tcGFyZTpt
aW5pbXVtU2VjdXJlVmVyc2lvbiBvcHRpb25zOk5TTnVtZXJpY1NlYXJjaF0gPT0gTlNPcmRlcmVk
QXNjZW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIExvYWRQb2xpY3k6OkJsb2NrZWRGb3JTZWN1
cml0eTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBjaGVjayBpZiB0aGVyZSdzIGEgZm9yY2VkIG1p
bmltdW0gdmVyc2lvbiBmb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCisgICAgaWYgKE5TU3RyaW5n
ICptaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24gPSBbbV9idW5kbGVJRFRvTWluaW11bUNvbXBhdGli
bGVWZXJzaW9uIG9iamVjdEZvcktleTpidW5kbGVJZGVudGlmaWVyXSkgeworICAgICAgICBpZiAo
W2J1bmRsZVZlcnNpb25TdHJpbmcgY29tcGFyZTptaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24gb3B0
aW9uczpOU051bWVyaWNTZWFyY2hdID09IE5TT3JkZXJlZEFzY2VuZGluZykKKyAgICAgICAgICAg
IHJldHVybiBMb2FkUG9saWN5OjpCbG9ja2VkRm9yQ29tcGF0aWJpbGl0eTsKKyAgICB9CisKKyAg
ICByZXR1cm4gTG9hZFBvbGljeTo6TG9hZE5vcm1hbGx5OworfQorCitib29sIFBsdWdpbkJsb2Nr
bGlzdDo6aXNVcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX2J1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzIGNvbnRhaW5z
T2JqZWN0OmJ1bmRsZUlkZW50aWZpZXJdOworfQorCitQbHVnaW5CbG9ja2xpc3Q6OlBsdWdpbkJs
b2NrbGlzdChOU0RpY3Rpb25hcnkgKmJ1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiwgTlNE
aWN0aW9uYXJ5ICpidW5kbGVJRFRvTWluaW11bUNvbXBhdGlibGVWZXJzaW9uLCBOU0RpY3Rpb25h
cnkgKmJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lvbnMsIE5TU2V0ICpidW5kbGVJRHNXaXRoQXZhaWxh
YmxlVXBkYXRlcykKKyAgICA6IG1fYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uIHsgYWRv
cHROUyhbYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uIGNvcHldKSB9CisgICAgLCBtX2J1
bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24geyBhZG9wdE5TKFtidW5kbGVJRFRvTWlu
aW11bUNvbXBhdGlibGVWZXJzaW9uIGNvcHldKSB9CisgICAgLCBtX2J1bmRsZUlEVG9CbG9ja2Vk
VmVyc2lvbnMgeyBhZG9wdE5TKFtidW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zIGNvcHldKSB9Cisg
ICAgLCBtX2J1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzIHsgYWRvcHROUyhbYnVuZGxlSURz
V2l0aEF2YWlsYWJsZVVwZGF0ZXMgY29weV0pIH0KK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsYWNrbGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxhY2tsaXN0LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVmZjcyYTIwNzYwYzdlYWU2MTZiNTFiMzZlYTYxODQzZmE1YWE5MjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxhY2tsaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFBMQVRGT1JN
KE1BQykKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8
dmVjdG9yPgotCi1PQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJHTEJsYWNrbGlzdCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBCbG9ja0NvbXBh
cmlzb24gewotICAgICAgICBFcXVhbHMsCi0gICAgICAgIExlc3NUaGFuLAotICAgICAgICBMZXNz
VGhhbkVxdWFscwotICAgIH07Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91
bGRCbG9ja1dlYkdMKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkU3Vn
Z2VzdEJsb2NraW5nV2ViR0woKTsKLQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xC
bGFja2xpc3Q+IGNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5TGlzdCk7Ci0gICAgfldlYkdM
QmxhY2tsaXN0KCk7Ci0KLSAgICBib29sIHNob3VsZEJsb2NrKCkgY29uc3Q7Ci0gICAgYm9vbCBz
aG91bGRTdWdnZXN0QmxvY2tpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNz
IEJsb2NrQ29tbWFuZCB7Ci0gICAgICAgIEFsbG93LAotICAgICAgICBCbG9jaywKLSAgICAgICAg
U3VnZ2VzdEJsb2NraW5nCi0gICAgfTsKLQotICAgIFdlYkdMQmxhY2tsaXN0KEJsb2NrQ29tbWFu
ZCk7Ci0KLSAgICBCbG9ja0NvbW1hbmQgbV9jb21tYW5kOwotfTsKLQotfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsYWNrbGlzdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsYWNrbGlzdC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmZhZGNkMzVkNDk4NTRmNDIzMGE5YzJjNWZhZjY4Yzg3ZmI1
NDczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbGFja2xpc3QubW0KKysrIC9kZXYvbnVsbApA
QCAtMSwyNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJXZWJHTEJsYWNrbGlzdC5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0
ICJCbGFja2xpc3RVcGRhdGVyLmgiCi0jaW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+Ci0jaW1wb3J0
IDxwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RydWN0IE9TQnVpbGRJbmZvIHsKLSAgICBPU0J1aWxkSW5mbygpCi0gICAgICAgIDogbWFqb3Io
MCkKLSAgICAgICAgLCBtaW5vcigwKQotICAgICAgICAsIGJ1aWxkKDApCi0gICAgewotICAgIH0K
LQotICAgIE9TQnVpbGRJbmZvKGludCBtYWpvciwgaW50IG1pbm9yLCBpbnQgYnVpbGQpCi0gICAg
ICAgIDogbWFqb3IobWFqb3IpCi0gICAgICAgICwgbWlub3IobWlub3IpCi0gICAgICAgICwgYnVp
bGQoYnVpbGQpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPU0J1
aWxkSW5mbyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFqb3IgPT0gb3Ro
ZXIubWFqb3IgJiYgbWlub3IgPT0gb3RoZXIubWlub3IgJiYgYnVpbGQgPT0gb3RoZXIuYnVpbGQ7
Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQp
ID4gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8PSBz
dGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yPChjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPCBzdGQ6OnRp
ZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxkKTsKLSAgICB9Ci0KLSAgICBp
bnQgbWFqb3I7IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsg
Ly8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBp
LmUuIDMpLgotICAgIGludCBidWlsZDsgLy8gUmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCi19
OwotCi1zdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJp
bmcgKmJ1aWxkU3RyaW5nKQotewotICAgIE5TRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgICBOU1Jl
Z3VsYXJFeHByZXNzaW9uICpyZWdleCA9IFtOU1JlZ3VsYXJFeHByZXNzaW9uIHJlZ3VsYXJFeHBy
ZXNzaW9uV2l0aFBhdHRlcm46QCJeKFxcZCspKFtBLVpdKShcXGQrKSIgb3B0aW9uczowIGVycm9y
OiZlcnJvcl07Ci0gICAgTlNBcnJheSAqbWF0Y2hlcyA9IFtyZWdleCBtYXRjaGVzSW5TdHJpbmc6
YnVpbGRTdHJpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtidWlsZFN0cmluZyBs
ZW5ndGhdKV07Ci0gICAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMuY291bnQgIT0gMSkgewotI2lm
bmRlZiBOREVCVUcKLSAgICAgICAgTlNMb2coQCJXZWJHTEJsYWNrbGlzdCBjb3VsZCBub3QgcGFy
c2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7Ci0jZW5kaWYKLSAgICAgICAgcmV0
dXJuIE9TQnVpbGRJbmZvKCk7Ci0gICAgfQotCi0gICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm1h
dGNoUmVzdWx0ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKLQotICAgIGlmIChtYXRjaFJl
c3VsdC5udW1iZXJPZlJhbmdlcyAhPSA0KSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBOU0xv
ZyhAIldlYkdMQmxhY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1
aWxkU3RyaW5nKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsKLSAgICB9
Ci0KLSAgICBpbnQgbWFqb3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFu
Z2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDoxXV0gaW50VmFsdWVdOwotICAgIGludCBtaW5v
clZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQg
cmFuZ2VBdEluZGV4OjJdXSBjaGFyYWN0ZXJBdEluZGV4OjBdIC0gJ0EnICsgMTsKLSAgICBpbnQg
YnVpbGRWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVz
dWx0IHJhbmdlQXRJbmRleDozXV0gaW50VmFsdWVdOwotCi0gICAgcmV0dXJuIE9TQnVpbGRJbmZv
KG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBidWlsZFZlcnNpb24pOwotfQotCi1ib29sIFdl
YkdMQmxhY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKLXsKLSAgICBCbGFja2xpc3RVcGRhdGVy
Ojppbml0aWFsaXplUXVldWUoKTsKLQotICAgIF9fYmxvY2sgYm9vbCBzaG91bGRCbG9jayA9IGZh
bHNlOwotICAgIGRpc3BhdGNoX3N5bmMoQmxhY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsKLSAg
ICAgICAgQmxhY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBX
ZWJHTEJsYWNrbGlzdCogd2ViR0xCbGFja2xpc3QgPSBCbGFja2xpc3RVcGRhdGVyOjp3ZWJHTEJs
YWNrbGlzdCgpOwotICAgICAgICBpZiAod2ViR0xCbGFja2xpc3QpCi0gICAgICAgICAgICBzaG91
bGRCbG9jayA9IHdlYkdMQmxhY2tsaXN0LT5zaG91bGRCbG9jaygpOwotICAgIH0pOwotCi0gICAg
cmV0dXJuIHNob3VsZEJsb2NrOwotfQotCi1ib29sIFdlYkdMQmxhY2tsaXN0OjpzaG91bGRTdWdn
ZXN0QmxvY2tpbmdXZWJHTCgpCi17Ci0gICAgQmxhY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1
ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgc2hvdWxkU3VnZ2VzdEJsb2NraW5nID0gZmFsc2U7
Ci0gICAgZGlzcGF0Y2hfc3luYyhCbGFja2xpc3RVcGRhdGVyOjpxdWV1ZSgpLCBeewotICAgICAg
ICBCbGFja2xpc3RVcGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2FyeSgpOwotCi0gICAgICAgIFdlYkdM
QmxhY2tsaXN0KiB3ZWJHTEJsYWNrbGlzdCA9IEJsYWNrbGlzdFVwZGF0ZXI6OndlYkdMQmxhY2ts
aXN0KCk7Ci0gICAgICAgIGlmICh3ZWJHTEJsYWNrbGlzdCkKLSAgICAgICAgICAgIHNob3VsZFN1
Z2dlc3RCbG9ja2luZyA9IHdlYkdMQmxhY2tsaXN0LT5zaG91bGRTdWdnZXN0QmxvY2tpbmcoKTsK
LSAgICB9KTsKLQotICAgIHJldHVybiBzaG91bGRTdWdnZXN0QmxvY2tpbmc7Ci19Ci0KLXN0YXRp
YyBib29sIG1hdGNoZXNHUFUoR0xpbnQgbWFjaGluZUlkLCBHTGludCByZW5kZXJlck1hc2spCi17
Ci0gICAgLy8gSWYgdGhlIGxhc3QgdHdvIGJ5dGVzIG9mIHRoZSByZW5kZXJlck1hc2sgYXJlIG5v
dCB6ZXJvLCB0aGVuIHdlJ3JlCi0gICAgLy8gbG9va2luZyBmb3IgYW4gZXhhY3QgR1BVIG1hdGNo
LiBPdGhlcndpc2Ugd2UncmUgbWF0Y2hpbmcgYWdhaW5zdAotICAgIC8vIGEgY2xhc3Mgb2YgR1BV
cy4KLQotICAgIGlmIChyZW5kZXJlck1hc2sgJiAweEZGKQotICAgICAgICByZXR1cm4gbWFjaGlu
ZUlkID09IHJlbmRlcmVyTWFzazsKLQotICAgIHJldHVybiAobWFjaGluZUlkICYga0NHTFJlbmRl
cmVySURNYXRjaGluZ01hc2spID09IHJlbmRlcmVyTWFzazsKLX0KLQotc3RhdGljIEdMaW50IGdw
dU1hc2tGcm9tU3RyaW5nKE5TU3RyaW5nICppbnB1dCkKLXsKLSAgICBOU1NjYW5uZXIqIHNjYW5u
ZXIgPSBbTlNTY2FubmVyIHNjYW5uZXJXaXRoU3RyaW5nOmlucHV0XTsKLSAgICB1bnNpZ25lZCBt
YXNrVmFsdWU7Ci0gICAgW3NjYW5uZXIgc2NhbkhleEludDombWFza1ZhbHVlXTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1hc2tWYWx1ZSAmIChrQ0dMUmVuZGVyZXJJRE1hdGNoaW5n
TWFzayB8IDB4RkYpKTsKLX0KLQotc3RhdGljIGJvb2wgbWF0Y2hlc0J1aWxkSW5mbyhPU0J1aWxk
SW5mbyBtYWNoaW5lSW5mbywgT1NCdWlsZEluZm8gYmxvY2tJbmZvLCBXZWJHTEJsYWNrbGlzdDo6
QmxvY2tDb21wYXJpc29uIGNvbXBhcmlzb24pCi17Ci0gICAgc3dpdGNoIChjb21wYXJpc29uKSB7
Ci0gICAgY2FzZSBXZWJHTEJsYWNrbGlzdDo6QmxvY2tDb21wYXJpc29uOjpFcXVhbHM6Ci0gICAg
ICAgIHJldHVybiBtYWNoaW5lSW5mbyA9PSBibG9ja0luZm87Ci0gICAgY2FzZSBXZWJHTEJsYWNr
bGlzdDo6QmxvY2tDb21wYXJpc29uOjpMZXNzVGhhbjoKLSAgICAgICAgcmV0dXJuIG1hY2hpbmVJ
bmZvIDwgYmxvY2tJbmZvOwotICAgIGNhc2UgV2ViR0xCbGFja2xpc3Q6OkJsb2NrQ29tcGFyaXNv
bjo6TGVzc1RoYW5FcXVhbHM6Ci0gICAgICAgIHJldHVybiBtYWNoaW5lSW5mbyA8PSBibG9ja0lu
Zm87Ci0gICAgfQotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViR0xCbGFja2xpc3Q+IFdlYkdMQmxh
Y2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0eUxpc3QpCi17Ci0gICAgQ0ZEaWN0
aW9uYXJ5UmVmIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gX0NGQ29weVN5c3RlbVZlcnNpb25E
aWN0aW9uYXJ5KCk7Ci0gICAgQ0ZTdHJpbmdSZWYgb3NCdWlsZCA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwgX2tD
RlN5c3RlbVZlcnNpb25CdWlsZFZlcnNpb25LZXkpKTsKLSAgICBPU0J1aWxkSW5mbyBidWlsZElu
Zm8gPSBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZygoX19icmlkZ2UgTlNTdHJpbmcgKilvc0J1
aWxkKTsKLSAgICBDRlJlbGVhc2Uoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkpOwotCi0gICAgaWYg
KCFidWlsZEluZm8ubWFqb3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTlNBcnJh
eSAqYmxvY2tFbnRyaWVzID0gW3Byb3BlcnR5TGlzdCBvYmplY3RGb3JLZXk6QCJXZWJHTEJsYWNr
bGlzdCJdOwotCi0gICAgaWYgKCFbYmxvY2tFbnRyaWVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSB8fCAhYmxvY2tFbnRyaWVzLmNvdW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIENHTFBpeGVsRm9ybWF0QXR0cmlidXRlIGF0dHJpYnNbMTJdID0gewotICAgICAgICBr
Q0dMUEZBQ29sb3JTaXplLCAoQ0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGUpMzIsCi0gICAgICAgIGtD
R0xQRkFEZXB0aFNpemUsIChDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZSkzMiwKLSAgICAgICAga0NH
TFBGQUFjY2VsZXJhdGVkLAotICAgICAgICBrQ0dMUEZBU3VwZXJzYW1wbGUsCi0gICAgICAgIGtD
R0xQRkFNdWx0aXNhbXBsZSwKLSAgICAgICAga0NHTFBGQVNhbXBsZUJ1ZmZlcnMsIChDR0xQaXhl
bEZvcm1hdEF0dHJpYnV0ZSkxLAotICAgICAgICBrQ0dMUEZBU2FtcGxlcywgKENHTFBpeGVsRm9y
bWF0QXR0cmlidXRlKTQsCi0gICAgICAgIChDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZSkwCi0gICAg
fTsKLQotICAgIENHTFBpeGVsRm9ybWF0T2JqIHBpeDsKLSAgICBHTGludCBucGl4OwotICAgIENH
TENob29zZVBpeGVsRm9ybWF0KGF0dHJpYnMsICZwaXgsICZucGl4KTsKLSAgICBDR0xDb250ZXh0
T2JqIGN0eDsKLSAgICBDR0xDcmVhdGVDb250ZXh0KHBpeCwgMCwgJmN0eCk7Ci0gICAgR0xpbnQg
cmVuZGVyZXJJZCA9IDA7Ci0gICAgQ0dMR2V0UGFyYW1ldGVyKGN0eCwga0NHTENQQ3VycmVudFJl
bmRlcmVySUQsICZyZW5kZXJlcklkKTsKLSAgICBHTGludCBzdXBwb3J0c1NlcGFyYXRlQWRkcmVz
c1NwYWNlID0gMDsKLSAgICBDR0xHZXRQYXJhbWV0ZXIoY3R4LCBrQ0dMQ1BTdXBwb3J0U2VwYXJh
dGVBZGRyZXNzU3BhY2UsICZzdXBwb3J0c1NlcGFyYXRlQWRkcmVzc1NwYWNlKTsKLSAgICBDR0xE
ZXN0cm95Q29udGV4dChjdHgpOwotICAgIENHTFJlbGVhc2VQaXhlbEZvcm1hdChwaXgpOwotCi0g
ICAgcmVuZGVyZXJJZCAmPSBrQ0dMUmVuZGVyZXJJRE1hdGNoaW5nTWFzayB8IDB4RkY7Ci0KLSAg
ICBCbG9ja0NvbW1hbmQgZ2xvYmFsQ29tbWFuZCA9IEJsb2NrQ29tbWFuZDo6QWxsb3c7Ci0KLSAg
ICBmb3IgKE5TRGljdGlvbmFyeSAqYmxvY2tEYXRhIGluIGJsb2NrRW50cmllcykgewotCi0gICAg
ICAgIEdMaW50IGdwdU1hc2sgPSBncHVNYXNrRnJvbVN0cmluZyhbYmxvY2tEYXRhIG9iamVjdEZv
cktleTpAIkdQVSJdKTsKLQotICAgICAgICBPU0J1aWxkSW5mbyBibG9ja2VkQnVpbGRJbmZvID0g
YnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoc3RhdGljX2Nhc3Q8TlNTdHJpbmcqPihbYmxvY2tE
YXRhIG9iamVjdEZvcktleTpAIk9TQnVpbGQiXSkpOwotCi0gICAgICAgIE5TU3RyaW5nICpjb21w
YXJpc29uU3RyaW5nID0gW2Jsb2NrRGF0YSBvYmplY3RGb3JLZXk6QCJDb21wYXJpc29uIl07Ci0g
ICAgICAgIEJsb2NrQ29tcGFyaXNvbiBjb21wYXJpc29uID0gQmxvY2tDb21wYXJpc29uOjpFcXVh
bHM7Ci0gICAgICAgIGlmIChbY29tcGFyaXNvblN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJMZXNz
VGhhbiJdKQotICAgICAgICAgICAgY29tcGFyaXNvbiA9IEJsb2NrQ29tcGFyaXNvbjo6TGVzc1Ro
YW47Ci0gICAgICAgIGVsc2UgaWYgKFtjb21wYXJpc29uU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpA
Ikxlc3NUaGFuRXF1YWxzIl0pCi0gICAgICAgICAgICBjb21wYXJpc29uID0gQmxvY2tDb21wYXJp
c29uOjpMZXNzVGhhbkVxdWFsczsKLQotICAgICAgICBOU1N0cmluZyAqY29tbWFuZFN0cmluZyA9
IFtibG9ja0RhdGEgb2JqZWN0Rm9yS2V5OkAiQ29tbWFuZCJdOwotICAgICAgICBCbG9ja0NvbW1h
bmQgY29tbWFuZCA9IEJsb2NrQ29tbWFuZDo6QWxsb3c7Ci0gICAgICAgIGlmIChbY29tbWFuZFN0
cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJCbG9jayJdKQotICAgICAgICAgICAgY29tbWFuZCA9IEJs
b2NrQ29tbWFuZDo6QmxvY2s7Ci0gICAgICAgIGVsc2UgaWYgKFtjb21tYW5kU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAIlN1Z2dlc3RCbG9ja2luZyJdKQotICAgICAgICAgICAgY29tbWFuZCA9IEJs
b2NrQ29tbWFuZDo6U3VnZ2VzdEJsb2NraW5nOwotCi0gICAgICAgIGlmIChtYXRjaGVzR1BVKHJl
bmRlcmVySWQsIGdwdU1hc2spICYmIG1hdGNoZXNCdWlsZEluZm8oYnVpbGRJbmZvLCBibG9ja2Vk
QnVpbGRJbmZvLCBjb21wYXJpc29uKSkgewotICAgICAgICAgICAgZ2xvYmFsQ29tbWFuZCA9IGNv
bW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgh
c3VwcG9ydHNTZXBhcmF0ZUFkZHJlc3NTcGFjZSAmJiBnbG9iYWxDb21tYW5kID09IEJsb2NrQ29t
bWFuZDo6QWxsb3cpCi0gICAgICAgIGdsb2JhbENvbW1hbmQgPSBCbG9ja0NvbW1hbmQ6OlN1Z2dl
c3RCbG9ja2luZzsKLQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xCbGFja2xpc3Q+
KG5ldyBXZWJHTEJsYWNrbGlzdChnbG9iYWxDb21tYW5kKSk7Ci19Ci0KLWJvb2wgV2ViR0xCbGFj
a2xpc3Q6OnNob3VsZEJsb2NrKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tYW5kID09IEJs
b2NrQ29tbWFuZDo6QmxvY2s7Ci19Ci0KLWJvb2wgV2ViR0xCbGFja2xpc3Q6OnNob3VsZFN1Z2dl
c3RCbG9ja2luZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbWFuZCA9PSBCbG9ja0NvbW1h
bmQ6OlN1Z2dlc3RCbG9ja2luZzsKLX0KLQotV2ViR0xCbGFja2xpc3Q6OldlYkdMQmxhY2tsaXN0
KEJsb2NrQ29tbWFuZCBjb21tYW5kKQotICAgIDogbV9jb21tYW5kKGNvbW1hbmQpCi17Ci19Ci0K
LVdlYkdMQmxhY2tsaXN0Ojp+V2ViR0xCbGFja2xpc3QoKQotewotfQotCi19Ci0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjIzN2I1YzllMDMwODliODdjZmFlMjYwMWNmMWJiMGY4Mzk2M2Q1OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5oCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0o
TUFDKQorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYkdMQmxvY2tsaXN0IHsKK3B1YmxpYzoKKyAgICBlbnVtIEJsb2NrQ29tcGFy
aXNvbiB7CisgICAgICAgIEVxdWFscywKKyAgICAgICAgTGVzc1RoYW4sCisgICAgICAgIExlc3NU
aGFuRXF1YWxzCisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3Vs
ZEJsb2NrV2ViR0woKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRTdWdn
ZXN0QmxvY2tpbmdXZWJHTCgpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTEJs
b2NrbGlzdD4gY3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KTsKKyAgICB+V2ViR0xC
bG9ja2xpc3QoKTsKKworICAgIGJvb2wgc2hvdWxkQmxvY2soKSBjb25zdDsKKyAgICBib29sIHNo
b3VsZFN1Z2dlc3RCbG9ja2luZygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0gY2xhc3Mg
QmxvY2tDb21tYW5kIHsKKyAgICAgICAgQWxsb3csCisgICAgICAgIEJsb2NrLAorICAgICAgICBT
dWdnZXN0QmxvY2tpbmcKKyAgICB9OworCisgICAgV2ViR0xCbG9ja2xpc3QoQmxvY2tDb21tYW5k
KTsKKworICAgIEJsb2NrQ29tbWFuZCBtX2NvbW1hbmQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRiZjMxZDhhYTM5MWZiNWQ0NWYwYTZmNTRmZWYzMTlhNTY1ZWJhZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTAs
MCArMSwyNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV2ViR0xCbG9ja2xpc3QuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiQmxv
Y2tsaXN0VXBkYXRlci5oIgorI2ltcG9ydCA8T3BlbkdML09wZW5HTC5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBPU0J1aWxkSW5mbyB7CisgICAgT1NCdWlsZEluZm8oKQorICAgICAgICA6IG1ham9yKDApCisg
ICAgICAgICwgbWlub3IoMCkKKyAgICAgICAgLCBidWlsZCgwKQorICAgIHsKKyAgICB9CisKKyAg
ICBPU0J1aWxkSW5mbyhpbnQgbWFqb3IsIGludCBtaW5vciwgaW50IGJ1aWxkKQorICAgICAgICA6
IG1ham9yKG1ham9yKQorICAgICAgICAsIG1pbm9yKG1pbm9yKQorICAgICAgICAsIGJ1aWxkKGJ1
aWxkKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT1NCdWlsZElu
Zm8mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ham9yID09IG90aGVyLm1h
am9yICYmIG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09IG90aGVyLmJ1aWxkOworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA+IHN0
ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPD0gc3RkOjp0
aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CisgICAgfQorCisgICAg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3RkOjp0aWUob3Ro
ZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7CisgICAgfQorCisgICAgaW50IG1h
am9yOyAvLyBSZXByZXNlbnRzIHRoZSAxMyBpbiAxM0M2NC4KKyAgICBpbnQgbWlub3I7IC8vIFJl
cHJlc2VudHMgdGhlIEMgaW4gMTNDNjQgKGFzIGEgbnVtYmVyIHdoZXJlIEEgPT0gMSwgaS5lLiAz
KS4KKyAgICBpbnQgYnVpbGQ7IC8vIFJlcHJlc2VudHMgdGhlIDY0IGluIDEzQzY0LgorfTsKKwor
c3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3RyaW5nKE5TU3RyaW5nICpi
dWlsZFN0cmluZykKK3sKKyAgICBOU0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgTlNSZWd1bGFy
RXhwcmVzc2lvbiAqcmVnZXggPSBbTlNSZWd1bGFyRXhwcmVzc2lvbiByZWd1bGFyRXhwcmVzc2lv
bldpdGhQYXR0ZXJuOkAiXihcXGQrKShbQS1aXSkoXFxkKykiIG9wdGlvbnM6MCBlcnJvcjomZXJy
b3JdOworICAgIE5TQXJyYXkgKm1hdGNoZXMgPSBbcmVnZXggbWF0Y2hlc0luU3RyaW5nOmJ1aWxk
U3RyaW5nIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBbYnVpbGRTdHJpbmcgbGVuZ3Ro
XSldOworICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmNvdW50ICE9IDEpIHsKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgIE5TTG9nKEAiV2ViR0xCbG9ja2xpc3QgY291bGQgbm90IHBhcnNlIE9T
QnVpbGQgZW50cnk6ICVAIiwgYnVpbGRTdHJpbmcpOworI2VuZGlmCisgICAgICAgIHJldHVybiBP
U0J1aWxkSW5mbygpOworICAgIH0KKworICAgIE5TVGV4dENoZWNraW5nUmVzdWx0ICptYXRjaFJl
c3VsdCA9IFttYXRjaGVzIG9iamVjdEF0SW5kZXg6MF07CisKKyAgICBpZiAobWF0Y2hSZXN1bHQu
bnVtYmVyT2ZSYW5nZXMgIT0gNCkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgTlNMb2coQCJX
ZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0
cmluZyk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAgfQorCisg
ICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOltt
YXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGludFZhbHVlXTsKKyAgICBpbnQgbWlub3JWZXJz
aW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdl
QXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDowXSAtICdBJyArIDE7CisgICAgaW50IGJ1aWxk
VmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCBy
YW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKKworICAgIHJldHVybiBPU0J1aWxkSW5mbyhtYWpv
clZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uKTsKK30KKworYm9vbCBXZWJHTEJs
b2NrbGlzdDo6c2hvdWxkQmxvY2tXZWJHTCgpCit7CisgICAgQmxvY2tsaXN0VXBkYXRlcjo6aW5p
dGlhbGl6ZVF1ZXVlKCk7CisKKyAgICBfX2Jsb2NrIGJvb2wgc2hvdWxkQmxvY2sgPSBmYWxzZTsK
KyAgICBkaXNwYXRjaF9zeW5jKEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCksIF57CisgICAgICAg
IEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCk7CisKKyAgICAgICAgV2ViR0xC
bG9ja2xpc3QqIHdlYkdMQmxvY2tsaXN0ID0gQmxvY2tsaXN0VXBkYXRlcjo6d2ViR0xCbG9ja2xp
c3QoKTsKKyAgICAgICAgaWYgKHdlYkdMQmxvY2tsaXN0KQorICAgICAgICAgICAgc2hvdWxkQmxv
Y2sgPSB3ZWJHTEJsb2NrbGlzdC0+c2hvdWxkQmxvY2soKTsKKyAgICB9KTsKKworICAgIHJldHVy
biBzaG91bGRCbG9jazsKK30KKworYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxkU3VnZ2VzdEJs
b2NraW5nV2ViR0woKQoreworICAgIEJsb2NrbGlzdFVwZGF0ZXI6OmluaXRpYWxpemVRdWV1ZSgp
OworCisgICAgX19ibG9jayBib29sIHNob3VsZFN1Z2dlc3RCbG9ja2luZyA9IGZhbHNlOworICAg
IGRpc3BhdGNoX3N5bmMoQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsKKyAgICAgICAgQmxv
Y2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBXZWJHTEJsb2Nr
bGlzdCogd2ViR0xCbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjp3ZWJHTEJsb2NrbGlzdCgp
OworICAgICAgICBpZiAod2ViR0xCbG9ja2xpc3QpCisgICAgICAgICAgICBzaG91bGRTdWdnZXN0
QmxvY2tpbmcgPSB3ZWJHTEJsb2NrbGlzdC0+c2hvdWxkU3VnZ2VzdEJsb2NraW5nKCk7CisgICAg
fSk7CisKKyAgICByZXR1cm4gc2hvdWxkU3VnZ2VzdEJsb2NraW5nOworfQorCitzdGF0aWMgYm9v
bCBtYXRjaGVzR1BVKEdMaW50IG1hY2hpbmVJZCwgR0xpbnQgcmVuZGVyZXJNYXNrKQoreworICAg
IC8vIElmIHRoZSBsYXN0IHR3byBieXRlcyBvZiB0aGUgcmVuZGVyZXJNYXNrIGFyZSBub3QgemVy
bywgdGhlbiB3ZSdyZQorICAgIC8vIGxvb2tpbmcgZm9yIGFuIGV4YWN0IEdQVSBtYXRjaC4gT3Ro
ZXJ3aXNlIHdlJ3JlIG1hdGNoaW5nIGFnYWluc3QKKyAgICAvLyBhIGNsYXNzIG9mIEdQVXMuCisK
KyAgICBpZiAocmVuZGVyZXJNYXNrICYgMHhGRikKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVJZCA9
PSByZW5kZXJlck1hc2s7CisKKyAgICByZXR1cm4gKG1hY2hpbmVJZCAmIGtDR0xSZW5kZXJlcklE
TWF0Y2hpbmdNYXNrKSA9PSByZW5kZXJlck1hc2s7Cit9CisKK3N0YXRpYyBHTGludCBncHVNYXNr
RnJvbVN0cmluZyhOU1N0cmluZyAqaW5wdXQpCit7CisgICAgTlNTY2FubmVyKiBzY2FubmVyID0g
W05TU2Nhbm5lciBzY2FubmVyV2l0aFN0cmluZzppbnB1dF07CisgICAgdW5zaWduZWQgbWFza1Zh
bHVlOworICAgIFtzY2FubmVyIHNjYW5IZXhJbnQ6Jm1hc2tWYWx1ZV07CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdMaW50PihtYXNrVmFsdWUgJiAoa0NHTFJlbmRlcmVySURNYXRjaGluZ01hc2sg
fCAweEZGKSk7Cit9CisKK3N0YXRpYyBib29sIG1hdGNoZXNCdWlsZEluZm8oT1NCdWlsZEluZm8g
bWFjaGluZUluZm8sIE9TQnVpbGRJbmZvIGJsb2NrSW5mbywgV2ViR0xCbG9ja2xpc3Q6OkJsb2Nr
Q29tcGFyaXNvbiBjb21wYXJpc29uKQoreworICAgIHN3aXRjaCAoY29tcGFyaXNvbikgeworICAg
IGNhc2UgV2ViR0xCbG9ja2xpc3Q6OkJsb2NrQ29tcGFyaXNvbjo6RXF1YWxzOgorICAgICAgICBy
ZXR1cm4gbWFjaGluZUluZm8gPT0gYmxvY2tJbmZvOworICAgIGNhc2UgV2ViR0xCbG9ja2xpc3Q6
OkJsb2NrQ29tcGFyaXNvbjo6TGVzc1RoYW46CisgICAgICAgIHJldHVybiBtYWNoaW5lSW5mbyA8
IGJsb2NrSW5mbzsKKyAgICBjYXNlIFdlYkdMQmxvY2tsaXN0OjpCbG9ja0NvbXBhcmlzb246Okxl
c3NUaGFuRXF1YWxzOgorICAgICAgICByZXR1cm4gbWFjaGluZUluZm8gPD0gYmxvY2tJbmZvOwor
ICAgIH0KK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkdMQmxvY2tsaXN0PiBXZWJHTEJsb2NrbGlz
dDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KQoreworICAgIENGRGljdGlvbmFy
eVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlv
bmFyeSgpOworICAgIENGU3RyaW5nUmVmIG9zQnVpbGQgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0
ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CisgICAgT1NCdWlsZEluZm8gYnVpbGRJbmZvID0g
YnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoKF9fYnJpZGdlIE5TU3RyaW5nICopb3NCdWlsZCk7
CisgICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKKworICAgIGlmICghYnVp
bGRJbmZvLm1ham9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5TQXJyYXkgKmJs
b2NrRW50cmllcyA9IFtwcm9wZXJ0eUxpc3Qgb2JqZWN0Rm9yS2V5OkAiV2ViR0xCbG9ja2xpc3Qi
XTsKKworICAgIGlmICghW2Jsb2NrRW50cmllcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0gfHwgIWJsb2NrRW50cmllcy5jb3VudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZSBhdHRyaWJzWzEyXSA9IHsKKyAgICAgICAga0NHTFBG
QUNvbG9yU2l6ZSwgKENHTFBpeGVsRm9ybWF0QXR0cmlidXRlKTMyLAorICAgICAgICBrQ0dMUEZB
RGVwdGhTaXplLCAoQ0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGUpMzIsCisgICAgICAgIGtDR0xQRkFB
Y2NlbGVyYXRlZCwKKyAgICAgICAga0NHTFBGQVN1cGVyc2FtcGxlLAorICAgICAgICBrQ0dMUEZB
TXVsdGlzYW1wbGUsCisgICAgICAgIGtDR0xQRkFTYW1wbGVCdWZmZXJzLCAoQ0dMUGl4ZWxGb3Jt
YXRBdHRyaWJ1dGUpMSwKKyAgICAgICAga0NHTFBGQVNhbXBsZXMsIChDR0xQaXhlbEZvcm1hdEF0
dHJpYnV0ZSk0LAorICAgICAgICAoQ0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGUpMAorICAgIH07CisK
KyAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXg7CisgICAgR0xpbnQgbnBpeDsKKyAgICBDR0xDaG9v
c2VQaXhlbEZvcm1hdChhdHRyaWJzLCAmcGl4LCAmbnBpeCk7CisgICAgQ0dMQ29udGV4dE9iaiBj
dHg7CisgICAgQ0dMQ3JlYXRlQ29udGV4dChwaXgsIDAsICZjdHgpOworICAgIEdMaW50IHJlbmRl
cmVySWQgPSAwOworICAgIENHTEdldFBhcmFtZXRlcihjdHgsIGtDR0xDUEN1cnJlbnRSZW5kZXJl
cklELCAmcmVuZGVyZXJJZCk7CisgICAgR0xpbnQgc3VwcG9ydHNTZXBhcmF0ZUFkZHJlc3NTcGFj
ZSA9IDA7CisgICAgQ0dMR2V0UGFyYW1ldGVyKGN0eCwga0NHTENQU3VwcG9ydFNlcGFyYXRlQWRk
cmVzc1NwYWNlLCAmc3VwcG9ydHNTZXBhcmF0ZUFkZHJlc3NTcGFjZSk7CisgICAgQ0dMRGVzdHJv
eUNvbnRleHQoY3R4KTsKKyAgICBDR0xSZWxlYXNlUGl4ZWxGb3JtYXQocGl4KTsKKworICAgIHJl
bmRlcmVySWQgJj0ga0NHTFJlbmRlcmVySURNYXRjaGluZ01hc2sgfCAweEZGOworCisgICAgQmxv
Y2tDb21tYW5kIGdsb2JhbENvbW1hbmQgPSBCbG9ja0NvbW1hbmQ6OkFsbG93OworCisgICAgZm9y
IChOU0RpY3Rpb25hcnkgKmJsb2NrRGF0YSBpbiBibG9ja0VudHJpZXMpIHsKKworICAgICAgICBH
TGludCBncHVNYXNrID0gZ3B1TWFza0Zyb21TdHJpbmcoW2Jsb2NrRGF0YSBvYmplY3RGb3JLZXk6
QCJHUFUiXSk7CisKKyAgICAgICAgT1NCdWlsZEluZm8gYmxvY2tlZEJ1aWxkSW5mbyA9IGJ1aWxk
SW5mb0Zyb21PU0J1aWxkU3RyaW5nKHN0YXRpY19jYXN0PE5TU3RyaW5nKj4oW2Jsb2NrRGF0YSBv
YmplY3RGb3JLZXk6QCJPU0J1aWxkIl0pKTsKKworICAgICAgICBOU1N0cmluZyAqY29tcGFyaXNv
blN0cmluZyA9IFtibG9ja0RhdGEgb2JqZWN0Rm9yS2V5OkAiQ29tcGFyaXNvbiJdOworICAgICAg
ICBCbG9ja0NvbXBhcmlzb24gY29tcGFyaXNvbiA9IEJsb2NrQ29tcGFyaXNvbjo6RXF1YWxzOwor
ICAgICAgICBpZiAoW2NvbXBhcmlzb25TdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiTGVzc1RoYW4i
XSkKKyAgICAgICAgICAgIGNvbXBhcmlzb24gPSBCbG9ja0NvbXBhcmlzb246Okxlc3NUaGFuOwor
ICAgICAgICBlbHNlIGlmIChbY29tcGFyaXNvblN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJMZXNz
VGhhbkVxdWFscyJdKQorICAgICAgICAgICAgY29tcGFyaXNvbiA9IEJsb2NrQ29tcGFyaXNvbjo6
TGVzc1RoYW5FcXVhbHM7CisKKyAgICAgICAgTlNTdHJpbmcgKmNvbW1hbmRTdHJpbmcgPSBbYmxv
Y2tEYXRhIG9iamVjdEZvcktleTpAIkNvbW1hbmQiXTsKKyAgICAgICAgQmxvY2tDb21tYW5kIGNv
bW1hbmQgPSBCbG9ja0NvbW1hbmQ6OkFsbG93OworICAgICAgICBpZiAoW2NvbW1hbmRTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOkAiQmxvY2siXSkKKyAgICAgICAgICAgIGNvbW1hbmQgPSBCbG9ja0Nv
bW1hbmQ6OkJsb2NrOworICAgICAgICBlbHNlIGlmIChbY29tbWFuZFN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6QCJTdWdnZXN0QmxvY2tpbmciXSkKKyAgICAgICAgICAgIGNvbW1hbmQgPSBCbG9ja0Nv
bW1hbmQ6OlN1Z2dlc3RCbG9ja2luZzsKKworICAgICAgICBpZiAobWF0Y2hlc0dQVShyZW5kZXJl
cklkLCBncHVNYXNrKSAmJiBtYXRjaGVzQnVpbGRJbmZvKGJ1aWxkSW5mbywgYmxvY2tlZEJ1aWxk
SW5mbywgY29tcGFyaXNvbikpIHsKKyAgICAgICAgICAgIGdsb2JhbENvbW1hbmQgPSBjb21tYW5k
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXN1cHBv
cnRzU2VwYXJhdGVBZGRyZXNzU3BhY2UgJiYgZ2xvYmFsQ29tbWFuZCA9PSBCbG9ja0NvbW1hbmQ6
OkFsbG93KQorICAgICAgICBnbG9iYWxDb21tYW5kID0gQmxvY2tDb21tYW5kOjpTdWdnZXN0Qmxv
Y2tpbmc7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYkdMQmxvY2tsaXN0PihuZXcg
V2ViR0xCbG9ja2xpc3QoZ2xvYmFsQ29tbWFuZCkpOworfQorCitib29sIFdlYkdMQmxvY2tsaXN0
OjpzaG91bGRCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tbWFuZCA9PSBCbG9ja0Nv
bW1hbmQ6OkJsb2NrOworfQorCitib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRTdWdnZXN0Qmxv
Y2tpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1hbmQgPT0gQmxvY2tDb21tYW5kOjpT
dWdnZXN0QmxvY2tpbmc7Cit9CisKK1dlYkdMQmxvY2tsaXN0OjpXZWJHTEJsb2NrbGlzdChCbG9j
a0NvbW1hbmQgY29tbWFuZCkKKyAgICA6IG1fY29tbWFuZChjb21tYW5kKQoreworfQorCitXZWJH
TEJsb2NrbGlzdDo6fldlYkdMQmxvY2tsaXN0KCkKK3sKK30KKworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5JbmZv
cm1hdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tCmluZGV4IDMyNTg0ZDQxNmJlMGZmMjVlOWU5MWRkZjQy
ODcwZTMzOTRmNDkzNjYuLjY3OWE0MzhhOTA5ODhjN2U4YjdhZmMxNzBlODA4MjcxZmU2NGI2OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1Bs
dWdpbkluZm9ybWF0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tCkBAIC0zMiw3ICszMiw3IEBACiAj
aW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbXBv
cnQgIlN0cmluZ1V0aWxpdGllcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5CbGFja2xpc3Qu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luQmxvY2tsaXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgZ2V0
UGxhdGZvcm1QbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBw
bHVnaW4sIEFQSTo6RGljCiAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50
aWZpZXJLZXkoKSwgQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW4uYnVuZGxlSWRlbnRpZmllcikp
OwogICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCksIEFQSTo6
U3RyaW5nOjpjcmVhdGUocGx1Z2luLnZlcnNpb25TdHJpbmcpKTsKICAgICBtYXAuc2V0KHBsdWdp
bkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCksIEFQSTo6U3RyaW5nOjpjcmVhdGUo
cGx1Z2luLnNob3J0VmVyc2lvblN0cmluZykpOwotICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRp
b25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpLCBBUEk6
OkJvb2xlYW46OmNyZWF0ZShXZWJDb3JlOjpQbHVnaW5CbGFja2xpc3Q6OmlzUGx1Z2luVXBkYXRl
QXZhaWxhYmxlKG5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcocGx1Z2luLmJ1bmRsZUlkZW50aWZp
ZXIpKSkpOworICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2Nr
ZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpLCBBUEk6OkJvb2xlYW46OmNyZWF0ZShXZWJD
b3JlOjpQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlKG5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcocGx1Z2luLmJ1bmRsZUlkZW50aWZpZXIpKSkpOwogICAgIG1hcC5zZXQo
cGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpLCBBUEk6OkJvb2xlYW46OmNy
ZWF0ZShwbHVnaW4uaGFzU2FuZGJveFByb2ZpbGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRl
eCBiZTdmY2YyMWU0ZWVhMjE2YmFkMDFjZGVjM2VlM2NjN2UyMTRiYmRlLi4xM2MwYzZmMGNlYzky
NWU2ZDkyZGMyNmJkNWY4MTY3MzhkZWYyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtMzgsOCAr
MzgsOCBAQAogI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NG
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5C
bGFja2xpc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xCbGFja2xpc3QuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUGx1Z2luQmxvY2tsaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkdMQmxvY2ts
aXN0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGJvb2wgV0tDb250ZXh0SXNQbHVn
SW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBs
dWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgV0tDb250ZXh0
SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIHBsdWdJCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gZmFsc2U7CiAj
ZWxzZQotICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5CbGFja2xpc3Q6OmlzUGx1Z2luVXBkYXRl
QXZhaWxhYmxlKChfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2
YWlsYWJsZSgoX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKFdLU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpKS5nZXQoKSk7
CiAjZW5kaWYKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z0luSW5m
b0lzU2FuZGJveGVkS2V5KCkKIGJvb2wgV0tDb250ZXh0U2hvdWxkQmxvY2tXZWJHTCgpCiB7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEJsYWNrbGlzdDo6c2hv
dWxkQmxvY2tXZWJHTCgpOworICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEJsb2NrbGlzdDo6c2hv
dWxkQmxvY2tXZWJHTCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTE2
NSw3ICsxNjUsNyBAQCBib29sIFdLQ29udGV4dFNob3VsZEJsb2NrV2ViR0woKQogYm9vbCBXS0Nv
bnRleHRTaG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTEJsYWNrbGlzdDo6c2hvdWxkU3VnZ2VzdEJsb2NraW5nV2Vi
R0woKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja2xpc3Q6OnNob3VsZFN1Z2dlc3RC
bG9ja2luZ1dlYkdMKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0b3Jl
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0
b3JlTWFjLm1tCmluZGV4IGZmZjhlMjU4OWRlZDQ3YzkzZmQ4NmY5MGIzNWJkYWQzYTk4MzA5M2Qu
LmU2ZDdkMGE1ZjNiODhhOWMxMzY0ZGY3Yzc1MTY5ZGY5Yjg5Njk4ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZvU3RvcmVN
YWMubW0KQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5l
dHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL1BsdWdpbkJsYWNrbGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5C
bG9ja2xpc3QuaD4KICNpbXBvcnQgPHB3ZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMywxMiArMTEzLDEyIEBAIGJvb2wgUGx1Z2lu
SW5mb1N0b3JlOjpzaG91bGRVc2VQbHVnaW4oVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+JiBhbHJl
YWR5TG9hZGVkUGx1CiAKIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgUGx1Z2luSW5mb1N0b3JlOjpk
ZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4p
CiB7Ci0gICAgc3dpdGNoIChQbHVnaW5CbGFja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW5WZXJz
aW9uKHBsdWdpbi5idW5kbGVJZGVudGlmaWVyLCBwbHVnaW4udmVyc2lvblN0cmluZykpIHsKLSAg
ICBjYXNlIFBsdWdpbkJsYWNrbGlzdDo6TG9hZFBvbGljeTo6TG9hZE5vcm1hbGx5OgorICAgIHN3
aXRjaCAoUGx1Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihwbHVnaW4u
YnVuZGxlSWRlbnRpZmllciwgcGx1Z2luLnZlcnNpb25TdHJpbmcpKSB7CisgICAgY2FzZSBQbHVn
aW5CbG9ja2xpc3Q6OkxvYWRQb2xpY3k6OkxvYWROb3JtYWxseToKICAgICAgICAgcmV0dXJuIFBs
dWdpbk1vZHVsZUxvYWROb3JtYWxseTsKLSAgICBjYXNlIFBsdWdpbkJsYWNrbGlzdDo6TG9hZFBv
bGljeTo6QmxvY2tlZEZvclNlY3VyaXR5OgorICAgIGNhc2UgUGx1Z2luQmxvY2tsaXN0OjpMb2Fk
UG9saWN5OjpCbG9ja2VkRm9yU2VjdXJpdHk6CiAgICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGVC
bG9ja2VkRm9yU2VjdXJpdHk7Ci0gICAgY2FzZSBQbHVnaW5CbGFja2xpc3Q6OkxvYWRQb2xpY3k6
OkJsb2NrZWRGb3JDb21wYXRpYmlsaXR5OgorICAgIGNhc2UgUGx1Z2luQmxvY2tsaXN0OjpMb2Fk
UG9saWN5OjpCbG9ja2VkRm9yQ29tcGF0aWJpbGl0eToKICAgICAgICAgcmV0dXJuIFBsdWdpbk1v
ZHVsZUJsb2NrZWRGb3JDb21wYXRpYmlsaXR5OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggZTk1Mzc1ZmJhMzFlZGI3ZTBjMzk0YzU2NDI4NjYxYTM2ZWMxNzdiNi4u
NTE3MTU3ZTQ2ZGM2OGJlMDcwZjg3YTZiNGFhMzgzYjM0YTk2MjM3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTEwOCw3ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5CbGFja2xpc3QuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGx1Z2luQmxvY2tsaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
blZpZXdCYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC0xMTksNyArMTE5LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N1YnJlc291cmNlTG9h
ZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dlYkdMQmxhY2tsaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkdMQmxvY2tsaXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NRWxlbWVudC5oPgpA
QCAtMTg4MSw4ICsxODgxLDggQEAgcHJpdmF0ZToKIHN0YXRpYyBib29sIHNob3VsZEJsb2NrUGx1
Z2luKFdlYkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlKQogewogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBhdXRvIGxvYWRQb2xpY3kgPSBXZWJDb3JlOjpQbHVnaW5CbGFja2xpc3Q6Omxv
YWRQb2xpY3lGb3JQbHVnaW5WZXJzaW9uKHBsdWdpblBhY2thZ2UuYnVuZGxlSWRlbnRpZmllciwg
cGx1Z2luUGFja2FnZS5idW5kbGVWZXJzaW9uKTsKLSAgICByZXR1cm4gbG9hZFBvbGljeSA9PSBX
ZWJDb3JlOjpQbHVnaW5CbGFja2xpc3Q6OkxvYWRQb2xpY3k6OkJsb2NrZWRGb3JTZWN1cml0eSB8
fCBsb2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkJsYWNrbGlzdDo6TG9hZFBvbGljeTo6Qmxv
Y2tlZEZvckNvbXBhdGliaWxpdHk7CisgICAgYXV0byBsb2FkUG9saWN5ID0gV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihwbHVnaW5QYWNrYWdlLmJ1
bmRsZUlkZW50aWZpZXIsIHBsdWdpblBhY2thZ2UuYnVuZGxlVmVyc2lvbik7CisgICAgcmV0dXJu
IGxvYWRQb2xpY3kgPT0gV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpMb2FkUG9saWN5OjpCbG9j
a2VkRm9yU2VjdXJpdHkgfHwgbG9hZFBvbGljeSA9PSBXZWJDb3JlOjpQbHVnaW5CbG9ja2xpc3Q6
OkxvYWRQb2xpY3k6OkJsb2NrZWRGb3JDb21wYXRpYmlsaXR5OwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0ocGx1Z2luUGFja2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEwNCw3ICsyMTA0
LDcgQEAgU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0CiBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1dlYkdMKCkKIHsKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQmxhY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCk7
CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgo=
</data>
<flag name="review"
          id="416896"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>