<?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>247224</bug_id>
          
          <creation_ts>2022-10-29 00:26:09 -0700</creation_ts>
          <short_desc>REGRESSION(256120@main): broke Safari build</short_desc>
          <delta_ts>2022-10-29 00:47:31 -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>246410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1909136</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-10-29 00:26:09 -0700</bug_when>
    <thetext>https://commits.webkit.org/256120@main introduced a regression:
broke Safari build

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1909138</commentid>
    <comment_count>1</comment_count>
      <attachid>463300</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-10-29 00:26:14 -0700</bug_when>
    <thetext>Created attachment 463300
REVERT of 256120@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1909142</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-29 00:47:00 -0700</bug_when>
    <thetext>Committed 256130@main (b5f2adb6e09f): &lt;https://commits.webkit.org/256130@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463300.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1909143</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-29 00:47:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/101707827&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463300</attachid>
            <date>2022-10-29 00:26:14 -0700</date>
            <delta_ts>2022-10-29 00:47:01 -0700</delta_ts>
            <desc>REVERT of 256120@main</desc>
            <filename>bug-247224-20221029002613.patch</filename>
            <type>text/plain</type>
            <size>160856</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBhNWY5N2VhYzgzYTA3OTU0MTcyYTgzYzg5MDE4YjY4MjhkNDM4ZDBmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDI5IE9jdCAyMDIyIDAwOjI2OjExIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTYxMjBAbWFpbi4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDcyMjQKCmJyb2tlIFNhZmFyaSBidWlsZAoKUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgoKIkFkZCBXZWIgRXh0ZW5zaW9uIGNvZGUgZ2VuZXJhdG9yIHNjcmlwdHMsIGJp
bmRpbmdzIGdsdWUsIGFuZCBzb21lIElETCBmaWxlcy4iCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNDY0MTAKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjU2MTIw
QG1haW4KLS0tCiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
fCAgIDU3ICstCiAuLi4vV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICAg
fCAgICA2IC0KIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSAgICAgICAgICAgICB8
ICAgMzMgLQogLi4uL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoICAgICAgIHwg
ICAgMiArLQogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAgIHwg
ICAgMiAtCiAuLi4vV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAg
MTE4IC0tCiAuLi4vQ29jb2EvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW0gICAgfCAg
IDUxIC0KIC4uLi9Db2NvYS9XZWJFeHRlbnNpb25BUElOYW1lc3BhY2VDb2NvYS5tbSAgICB8ICAg
NTMgLQogLi4uL0FQSS9Db2NvYS9XZWJFeHRlbnNpb25BUElSdW50aW1lQ29jb2EubW0gIHwgIDEx
MiAtLQogLi4uL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oIHwgICA1
MyAtCiAuLi4vRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmggfCAgIDU0
IC0KIC4uLi9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElPYmplY3QuaCAgICB8ICAxMDEg
LS0KIC4uLi9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElSdW50aW1lLmggICB8ICAgNzUg
LQogLi4uL0NvY29hL0pTV2ViRXh0ZW5zaW9uV3JhcHBlckNvY29hLm1tICAgICAgIHwgIDM1MSAt
LS0tCiAuLi4vQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaCAgICAgICAgfCAgIDQ1
IC0KIC4uLi9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIuY3BwICAgICAgICB8ICAgODYg
LQogLi4uL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5oICAgICAgICAgIHwgIDIwMSAt
LS0KIC4uLi9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtICAgICAgICB8IDE1NzEg
LS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9CaW5kaW5ncy9TY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNv
biAgICAgICB8ICAxMjYgLS0KIC4uLi9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lv
bi5pZGwgICB8ICAgMzMgLQogLi4uL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNl
LmlkbCAgIHwgICAzNSAtCiAuLi4vSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElSdW50aW1lLmlk
bCAgICAgfCAgIDQxIC0KIC4uLi9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAg
ICAgICB8ICAgIDEgLQogLi4uL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwIHwgICAgMSAtCiAuLi4vV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAgICAgICAg
ICAgfCAgICAxIC0KIC4uLi9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAg
ICB8ICAgIDEgLQogMjYgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMzE5MCBkZWxl
dGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0
ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW0KIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvQ29j
b2EvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlQ29jb2EubW0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9u
QVBJUnVudGltZUNvY29hLm1tCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4
dGVuc2lvbkFQSU5hbWVzcGFjZS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSU9iamVjdC5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4
dGVuc2lvbkFQSVJ1bnRpbWUuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0NvY29hL0pTV2ViRXh0ZW5zaW9uV3JhcHBlckNv
Y29hLm1tCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVu
c2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0
ZW5zaW9uV3JhcHBlci5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIuaAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdz
L1NjcmlwdHMvQ29kZUdlbmVyYXRvckV4dGVuc2lvbnMucG0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9FeHRlbnNpb25zL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmlkbAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0ludGVy
ZmFjZXMvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmlkbAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9u
QVBJUnVudGltZS5pZGwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggOTlmYjNiYmViMTIxLi5kODhmNDRjMTIyNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEsMTUgKzEsNCBAQAog
IyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0ZS14Y2ZpbGVsaXN0cyBzY3Jp
cHQuCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRp
b25zL0FkZGl0aW9uYWxGZWF0dXJlRGVmaW5lcy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNy
L2xvY2FsL2luY2x1ZGUvd3RmL0NvbXBpbGVyLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3Iv
bG9jYWwvaW5jbHVkZS93dGYvUGxhdGZvcm0uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9s
b2NhbC9pbmNsdWRlL3d0Zi9QbGF0Zm9ybUNQVS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNy
L2xvY2FsL2luY2x1ZGUvd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93dGYvUGxhdGZvcm1FbmFibGUuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93dGYvUGxhdGZv
cm1IYXZlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93dGYvUGxh
dGZvcm1MZWdhY3kuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0
Zi9QbGF0Zm9ybU9TLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93
dGYvUGxhdGZvcm1Vc2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
L3d0Zi9TY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS93dGYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd3RmL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sCkBAIC0xNzIsMjIgKzE2MSwx
MyBAQCAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViRXZlbnQuc2VyaWFsaXphdGlvbi5pbgogJChQ
Uk9KRUNUX0RJUikvU2hhcmVkL1dlYkV4dGVuc2lvbkNvbnRleHRQYXJhbWV0ZXJzLnNlcmlhbGl6
YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJFeHRlbnNpb25Db250cm9sbGVyUGFy
YW1ldGVycy5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5zZXJpYWxpemF0aW9uLmluCiAkKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
c2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5k
R3JvdXBMYXlvdXRFbnRyeS5zZXJpYWxpemF0aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQv
V2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LnNlcmlhbGl6YXRpb24uaW4KLSQoUFJPSkVDVF9E
SVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0ZS5zZXJpYWxpemF0aW9uLmluCi0kKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuc2VyaWFsaXphdGlv
bi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5
b3V0LnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BV
QnVmZmVyRGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQv
V2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uc2VyaWFsaXphdGlvbi5pbgotJChQUk9K
RUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvci5zZXJpYWxpemF0aW9uLmluCi0kKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuc2VyaWFsaXph
dGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVy
RGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BV
L1dlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pF
Q1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uTWVzc2FnZS5zZXJpYWxpemF0
aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVz
Y3JpcHRvci5zZXJpYWxpemF0aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVD
VF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5zZXJp
YWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3Rl
bmNpbFN0YXRlLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVRGV2aWNlRGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCkBAIC0yMDEsMzkgKzE4MSw0
OCBAQCAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUu
c2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFn
ZUNvcHlUZXh0dXJlVGFnZ2VkLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJl
ZC9XZWJHUFUvV2ViR1BVSW1hZ2VEYXRhTGF5b3V0LnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVD
VF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5zZXJpYWxpemF0aW9u
LmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JC
YXNlLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BV
T3JpZ2luMkQuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVPcmlnaW4zRC5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2Vi
R1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJ
UikvU2hhcmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLnNlcmlhbGl6YXRp
b24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4KLSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVUHJpbWl0aXZlU3RhdGUuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5zZXJpYWxpemF0aW9uLmluCiAkKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5zZXJpYWxp
emF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRs
ZURlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCi0k
KFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnQuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pF
Q1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLnNlcmlhbGl6
YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xh
eW91dC5zZXJpYWxpemF0aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJ
UikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iuc2VyaWFsaXph
dGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4K
ICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRp
b25IaW50LnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4K
KyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVy
dGV4U3RhdGUuc2VyaWFsaXphdGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVCaW5kR3JvdXBFbnRyeS5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVD
VF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0ZS5zZXJpYWxpemF0aW9uLmluCisk
KFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuc2VyaWFsaXph
dGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5n
TGF5b3V0LnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ2FudmFzQ29uZmlndXJhdGlvbi5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5zZXJpYWxpemF0aW9uLmluCisk
KFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3Jp
dGVzLnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BV
T2JqZWN0RGVzY3JpcHRvckJhc2Uuc2VyaWFsaXphdGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hh
cmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViR1BVL1dlYkdQVVByaW1pdGl2ZVN0YXRlLnNlcmlhbGl6YXRpb24uaW4KKyQo
UFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2Uuc2VyaWFs
aXphdGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50LnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc2VyaWFsaXphdGlv
bi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0
YW1wV3JpdGVzLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5zZXJpYWxpemF0
aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1
cmVzLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BV
U3VwcG9ydGVkTGltaXRzLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9X
ZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuc2VyaWFsaXphdGlvbi5pbgotJChQUk9K
RUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5zZXJpYWxpemF0
aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dl
YkdQVVZhbGlkYXRpb25FcnJvci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pF
Q1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5zZXJpYWxpemF0
aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleFN0YXRlLnNl
cmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29ubmVj
dGlvbkNvbmZpZ3VyYXRpb24uc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVk
L1dlYlB1c2hNZXNzYWdlLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YUZldGNoT3B0aW9uLnNlcmlhbGl6YXRpb24uaW4KQEAgLTI4
OCwxMSArMjc3LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuanMKICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRXh0
ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtCi0kKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvU2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24KLSQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRlcmZh
Y2VzL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5pZGwKLSQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5pZGwKLSQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lv
bkFQSVJ1bnRpbWUuaWRsCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvV2Vi
RXh0ZW5zaW9uQ29udGV4dFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvV2ViRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4KQEAgLTM3Miw2ICszNTYsMyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KICQoUFJP
SkVDVF9ESVIpL3dlYnB1c2hkL21hYy9jb20uYXBwbGUuV2ViS2l0LndlYnB1c2hkLnNiLmluCi0k
KFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQotJChXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL0lETFBhcnNlci5wbQotJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiYmUzMjA3ZWM0NDcuLmYwMTZjNGI0Mjg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC02MSwxMiArNjEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L0lQQ1N0cmVhbVRlc3RlclByb3h5TWVzc2FnZXNSZXBsaWVzLgogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9JUENUZXN0ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0lQQ1Rlc3Rl
ck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
SVBDVGVzdGVyTWVzc2FnZXNSZXBsaWVzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvSlNXZWJFeHRlbnNpb25BUElFeHRlbnNpb24ubW0KLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvSlNXZWJFeHRlbnNpb25BUElFeHRlbnNp
b24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9KU1dlYkV4
dGVuc2lvbkFQSU5hbWVzcGFjZS5tbQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9KU1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0pTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5tbQot
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9KU1dlYkV4dGVuc2lv
bkFQSVJ1bnRpbWUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzOWU0N2EzNmViMDQuLjhlNjU1YmNmZGY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNTEsNyArNTEsNiBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0b21hdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0NhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQiBcCi0gICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcyBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4gXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVSBc
CkBAIC0zMjcsMTQgKzMyNiw2IEBAIEdFTkVSQVRFX01FU1NBR0VfUkVDRUlWRVJfU0NSSVBUUyA9
IFwKIEZSQU1FV09SS19GTEFHUyA6PSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIp
ICQoRlJBTUVXT1JLX1NFQVJDSF9QQVRIUykgJChTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRI
UykgfCBwZXJsIC1lICdwcmludCAiLUYgIiAuIGpvaW4oIiAtRiAiLCBzcGxpdCgiICIsIDw+KSk7
JykKIEhFQURFUl9GTEFHUyA6PSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9EVUNUU19ESVIpICQo
SEVBREVSX1NFQVJDSF9QQVRIUykgJChTWVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUykgfCBwZXJs
IC1lICdwcmludCAiLUkiIC4gam9pbigiIC1JIiwgc3BsaXQoIiAiLCA8PikpOycpCiAKLXBsYXRm
b3JtX2hfY29tcGlsZXJfY29tbWFuZCA9ICQoQ0MpIC1zdGQ9YysrMmEgLXggYysrICQoMSkgJChT
REtfRkxBR1MpICQoVEFSR0VUX1RSSVBMRV9GTEFHUykgJChGUkFNRVdPUktfRkxBR1MpICQoSEVB
REVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiIC9kZXYvbnVsbAotCi1GRUFUVVJF
X0FORF9QTEFURk9STV9ERUZJTkVTIDo9ICQoc2hlbGwgJChjYWxsIHBsYXRmb3JtX2hfY29tcGls
ZXJfY29tbWFuZCwtRSAtUCAtZE0pIHwgJChQRVJMKSAtbmUgInByaW50IGlmIHMvXCNkZWZpbmUg
KChIQVZFX3xVU0VffEVOQUJMRV98V1RGX1BMQVRGT1JNXylcdyspIDEvXDEvIikKLQotUExBVEZP
Uk1fSEVBREVSX0RJUiA6PSAkKHJlYWxwYXRoICQoQlVJTFRfUFJPRFVDVFNfRElSKSQoV0tfTElC
UkFSWV9IRUFERVJTX0ZPTERFUl9QQVRIKSkKLVBMQVRGT1JNX0hFQURFUl9ERVBFTkRFTkNJRVMg
Oj0gJChmaWx0ZXIgJChQTEFURk9STV9IRUFERVJfRElSKS8lLCQocmVhbHBhdGggJChzaGVsbCAk
KGNhbGwgcGxhdGZvcm1faF9jb21waWxlcl9jb21tYW5kLC1NKSB8ICQoUEVSTCkgLWUgImxvY2Fs
IFwkJC87IG15IChcJCR0YXJnZXQsIFwkJGRlcHMpID0gc3BsaXQoLzovLCA8Pik7IHByaW50IHNw
bGl0KC9cXFxcLywgXCQkZGVwcyk7IikpKQotRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FX0RF
UEVOREVOQ0lFUyA9ICQoV2ViS2l0MikvRGVyaXZlZFNvdXJjZXMubWFrZSAkKFBMQVRGT1JNX0hF
QURFUl9ERVBFTkRFTkNJRVMpCi0KIE1FU1NBR0VfUkVDRUlWRVJfRklMRVMgOj0gJChhZGRzdWZm
aXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpCiBN
RVNTQUdFU19GSUxFUyA6PSAkKGFkZHN1ZmZpeCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FH
RV9SRUNFSVZFUlMpKSkKIE1FU1NBR0VfUkVQTElFU19GSUxFUyA6PSAkKGFkZHN1ZmZpeCBNZXNz
YWdlc1JlcGxpZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpCkBAIC01NjEsMjcg
KzU1MiwzIEBAIGFsbCA6IEdlbmVyYXRlZFNlcmlhbGl6ZXJzLmggR2VuZXJhdGVkU2VyaWFsaXpl
cnMuY3BwIEdlbmVyYXRlZFNlcmlhbGl6ZXJzLm1tIFNlCiAKIEdlbmVyYXRlZFNlcmlhbGl6ZXJz
LmggR2VuZXJhdGVkU2VyaWFsaXplcnMuY3BwIEdlbmVyYXRlZFNlcmlhbGl6ZXJzLm1tIFNlcmlh
bGl6ZWRUeXBlSW5mby5jcHAgOiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtc2VyaWFsaXpl
cnMucHkgJChTRVJJQUxJWkFUSU9OX0RFU0NSSVBUSU9OX0ZJTEVTKSAkKFdlYktpdDIpL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKIAkkKFBZVEhPTikgJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLXNl
cmlhbGl6ZXJzLnB5ICQoV2ViS2l0MikvICQoU0VSSUFMSVpBVElPTl9ERVNDUklQVElPTl9GSUxF
UykKLQotRVhURU5TSU9OU19ESVIgPSAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRXh0ZW5zaW9ucwot
RVhURU5TSU9OU19TQ1JJUFRTX0RJUiA9ICQoRVhURU5TSU9OU19ESVIpL0JpbmRpbmdzL1Njcmlw
dHMKLUVYVEVOU0lPTlNfSU5URVJGQUNFU19ESVIgPSAkKEVYVEVOU0lPTlNfRElSKS9JbnRlcmZh
Y2VzCi1JRExfQVRUUklCVVRFU19GSUxFID0gJChFWFRFTlNJT05TX1NDUklQVFNfRElSKS9JRExB
dHRyaWJ1dGVzLmpzb24KLQotQklORElOR1NfU0NSSVBUUyA9IFwKLSAgICAkKFdlYkNvcmVTY3Jp
cHRzKS9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBcCi0gICAgJChXZWJDb3JlU2NyaXB0cykvSURMUGFy
c2VyLnBtIFwKLSAgICAkKFdlYkNvcmVTY3JpcHRzKS9Db2RlR2VuZXJhdG9yLnBtIFwKLSAgICAk
KEVYVEVOU0lPTlNfU0NSSVBUU19ESVIpL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtIFwKLSMK
LQotRVhURU5TSU9OX0lOVEVSRkFDRVMgPSBcCi0gICAgV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9u
IFwKLSAgICBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UgXAotICAgIFdlYkV4dGVuc2lvbkFQSVJ1
bnRpbWUgXAotIwotCi1KUyUuaCBKUyUubW0gOiAlLmlkbCAkKEJJTkRJTkdTX1NDUklQVFMpICQo
SURMX0FUVFJJQlVURVNfRklMRSkgJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVfREVQRU5E
RU5DSUVTKQotCUBlY2hvIEdlbmVyYXRpbmcgYmluZGluZ3MgZm9yICQqLi4uCi0JJChQRVJMKSAt
SSAkKFdlYkNvcmVTY3JpcHRzKSAtSSAkKEVYVEVOU0lPTlNfU0NSSVBUU19ESVIpICQoV2ViQ29y
ZVNjcmlwdHMpL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9Q
TEFURk9STV9ERUZJTkVTKSIgLS1pbmNsdWRlICQoRVhURU5TSU9OU19JTlRFUkZBQ0VTX0RJUikg
LS1vdXRwdXREaXIgLiAtLWdlbmVyYXRvciBFeHRlbnNpb25zIC0taWRsQXR0cmlidXRlc0ZpbGUg
JChJRExfQVRUUklCVVRFU19GSUxFKSAkPAotCi1hbGwgOiAkKEVYVEVOU0lPTl9JTlRFUkZBQ0VT
OiU9SlMlLmgpICQoRVhURU5TSU9OX0lOVEVSRkFDRVM6JT1KUyUubW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAppbmRleCAzNWQ4MmU5
NTVmNTEuLjQyNmU5ZTcwM2IwMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dl
bmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2Vu
ZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoCkBAIC04LDcgKzgsNyBAQCBta2RpciAtcCAiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYktpdCIKIGNkICIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViS2l0IgogCiBleHBvcnQgV2ViS2l0Mj0iJHtTUkNS
T09UfSIKLWV4cG9ydCBXZWJDb3JlU2NyaXB0cz0iJHtXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVJ9IgorCiAKIGlmIFsgLXogJDEgXSB8fCBbICQxICE9ICJzYW5kYm94LXByb2ZpbGVzLWlvcyIg
XTsgdGhlbgogICAgIC9iaW4vbG4gLXNmaCAiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSfSIgSmF2YVNjcmlwdENvcmVQcml2YXRlSGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDU2NTJiZGI2NDg2MC4uNmJiOGEzYzVmZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC02MTMsOCArNjEzLDYgQEAgV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
IAogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZp
Y2VFbnRyeVBvaW50Lm1tCiAKLVdlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4
dGVuc2lvbldyYXBwZXIuY3BwCi0KIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTdmNTE3OTE2YzcwLi41YmJlZGU1NzU2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIxLDE5ICs0MjEsNiBAQAog
CQkxQzU2NTU3RjI3NDVDNUExMDA2MzAwQUYgLyogVW5pZmllZFNvdXJjZTEwMS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzU2NTU3QzI3NDVDNUEw
MDA2MzAwQUYgLyogVW5pZmllZFNvdXJjZTEwMS5jcHAgKi87IH07CiAJCTFDNTY1NTgwMjc0NUM1
QTEwMDYzMDBBRiAvKiBVbmlmaWVkU291cmNlMTAyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTY1NTdEMjc0NUM1QTEwMDYzMDBBRiAvKiBVbmlm
aWVkU291cmNlMTAyLmNwcCAqLzsgfTsKIAkJMUM1NjU1ODEyNzQ1QzVBMTAwNjMwMEFGIC8qIFVu
aWZpZWRTb3VyY2UxMDMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1NjU1N0UyNzQ1QzVBMTAwNjMwMEFGIC8qIFVuaWZpZWRTb3VyY2UxMDMuY3Bw
ICovOyB9OwotCQkxQzVEQzQ1MjI5MDhBOUQwMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFt
ZXNwYWNlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzVEQzQ1MTI5MDhBOUQwMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNl
Q29jb2EubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9
OyB9OwotCQkxQzVEQzQ1NTI5MDhBQzkwMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElOYW1l
c3BhY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzVEQzQ1NDI5MDhBQzI2MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UubW0g
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OwotCQkx
QzVEQzQ1RjI5MDlCMDVBMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVyQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVEQzQ1QTI5
MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVyQ29jb2EubW0gKi87IHNldHRp
bmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OwotCQkxQzVEQzQ2NjI5
MEIyMzg5MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZUNvY29hLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NjQyOTBCMjM4OTAw
NjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5tbSAqLzsgc2V0dGluZ3MgPSB7
Q09NUElMRVJfRkxBR1MgPSAiLWZvYmpjLWFyYyI7IH07IH07Ci0JCTFDNURDNDY3MjkwQjIzODkw
MDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb25Db2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNURDNDY1MjkwQjIzODkwMDYxRUM2
MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb25Db2NvYS5tbSAqLzsgc2V0dGluZ3MgPSB7Q09N
UElMRVJfRkxBR1MgPSAiLWZvYmpjLWFyYyI7IH07IH07Ci0JCTFDNURDNDZBMjkwQjI3MUEwMDYx
RUM2MiAvKiBXZWJFeHRlbnNpb25BUElSdW50aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVEQzQ2OTI5MEIyMzlDMDA2MUVDNjIgLyogV2ViRXh0
ZW5zaW9uQVBJUnVudGltZS5oICovOyB9OwotCQkxQzVEQzQ2QjI5MEIyNzFFMDA2MUVDNjIgLyog
V2ViRXh0ZW5zaW9uQVBJT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzVEQzQ0RTI5MDg3RTdGMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJ
T2JqZWN0LmggKi87IH07Ci0JCTFDNURDNDZDMjkwQjI3MUUwMDYxRUM2MiAvKiBXZWJFeHRlbnNp
b25BUElOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNURDNDRGMjkwODg4MTQwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElOYW1lc3Bh
Y2UuaCAqLzsgfTsKLQkJMUM1REM0NkQyOTBCMjcxRTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQ
SUV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM1REM0NjgyOTBCMjM5QzAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5o
ICovOyB9OwotCQkxQzVEQzQ2RTI5MEIyNzI2MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFw
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVE
QzQ1ODI5MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVyLmggKi87IH07Ci0J
CTFDNURDNDZGMjkwQjI3MjYwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NUIyOTA5
OUYwMTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlLmggKi87IH07Ci0JCTFDNURD
NDcxMjkwQjMzQTIwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNURDNDYwMjkwQjFD
NDQwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5tbSAqLzsgc2V0dGluZ3Mg
PSB7Q09NUElMRVJfRkxBR1MgPSAiLWZvYmpjLWFyYyI7IH07IH07Ci0JCTFDNURDNDcyMjkwQjMz
QTYwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVEQzQ2MzI5MEIxQzQ3MDA2MUVDNjIg
LyogSlNXZWJFeHRlbnNpb25BUElSdW50aW1lLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItZm9iamMtYXJjIjsgfTsgfTsKIAkJMUM2Mjc0NzgyODhBMUUxRDAwQ0VEM0EyIC8q
IFdlYkV4dGVuc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM2Mjc0NzcyODhBMURERTAwQ0VEM0EyIC8qIFdlYkV4dGVuc2lvbkNvY29h
Lm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9iamMtYXJjIjsgfTsgfTsK
IAkJMUM2Mjc0NzkyODhCMkY3NDAwQ0VEM0EyIC8qIF9XS1dlYkV4dGVuc2lvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDM0JFQjZFMjg4ODgzRTIw
MEU2NkUzOCAvKiBfV0tXZWJFeHRlbnNpb24ubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZM
QUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OwogCQkxQzYyNzQ3QTI4OEIyRjc0MDBDRUQzQTIgLyog
X1dLV2ViRXh0ZW5zaW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDM0JFQjU1Mjg4NzVDRTQwMEU2NkUzOCAvKiBfV0tXZWJFeHRl
bnNpb25Db250cm9sbGVyLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9i
amMtYXJjIjsgfTsgfTsKQEAgLTM2NTAsMjUgKzM2MzcsNiBAQAogCQkxQzU2NTU3RTI3NDVDNUEx
MDA2MzAwQUYgLyogVW5pZmllZFNvdXJjZTEwMy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlm
aWVkU291cmNlMTAzLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2UxMDMuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJMUM1QTEwNEUyODdCQjFFOTAwMzRGREE0IC8qIE92ZXJyaWRlTGFuZ3VhZ2Vz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE92ZXJyaWRlTGFuZ3VhZ2VzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QTEwNEYyODdCQjFFOTAwMzRGREE0IC8qIE92ZXJyaWRl
TGFuZ3VhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJyaWRlTGFuZ3VhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDRFMjkwODdFN0YwMDYxRUM2MiAvKiBXZWJFeHRl
bnNpb25BUElPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRXh0ZW5zaW9uQVBJT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDRGMjkwODg4MTQwMDYxRUM2MiAv
KiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRXh0ZW5zaW9u
QVBJTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDUxMjkw
OEE5RDAwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2VDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFj
ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ1MzI5MDhBQzI2
MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM1REM0NTQyOTA4QUMyNjAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDU3MjkwOTlGMDEwMDYxRUM2MiAv
KiBKU1dlYkV4dGVuc2lvbldyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJFeHRl
bnNpb25XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1REM0NTgy
OTA5OUYwMTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uV3JhcHBlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYkV4dGVuc2lvbldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM1REM0NUEyOTA5OUYwMTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uV3JhcHBlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNXZWJFeHRlbnNpb25XcmFwcGVyQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDVCMjkwOTlGMDEwMDYxRUM2MiAvKiBK
U1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkV4dGVuc2lvbldy
YXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ1RDI5MDlBMzY4
MDA2MUVDNjIgLyogQ29kZUdlbmVyYXRvckV4dGVuc2lvbnMucG0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0g
Q29kZUdlbmVyYXRvckV4dGVuc2lvbnMucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDNURDNDVFMjkwOUEzNjgwMDYxRUM2MiAvKiBJRExBdHRyaWJ1dGVzLmpzb24gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGgg
PSBJRExBdHRyaWJ1dGVzLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURD
NDYwMjkwQjFDNDQwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ2MTI5MEIxQzQ3MDA2MUVDNjIgLyogSlNXZWJF
eHRlbnNpb25BUElSdW50aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uQVBJUnVu
dGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ2MjI5MEIxQzQ3MDA2
MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM1REM0NjMyOTBCMUM0NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1REM0NjQyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4
dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM1REM0NjUyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQ
SUV4dGVuc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDNURDNDY4MjkwQjIzOUMwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElFeHRl
bnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDY5MjkwQjIzOUMwMDYxRUM2MiAvKiBXZWJF
eHRlbnNpb25BUElSdW50aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQSVJ1bnRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2Mjc0NzcyODhBMURERTAwQ0VE
M0EyIC8qIFdlYkV4dGVuc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRXh0
ZW5zaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjI3NDdCMjg4
QjRDM0UwMENFRDNBMiAvKiBDb2NvYUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29jb2FIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NjI3NDdDMjg4QjRDM0UwMENFRDNBMiAvKiBDb2NvYUhlbHBlcnMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2NvYUhlbHBlcnMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zODI3LDkgKzM3OTUsNiBAQAogCQkxQzk4QzBENjI3NDYyNjgyMDAy
Q0NCNzggLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwRDcyNzQ2MjY4MjAwMkND
Qjc4IC8qIFdlYkdQVURldmljZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDOThDMEQ4Mjc0NjI2ODIwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RE
ZXNjcmlwdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDOUREOTkwMjhGQTE5QTMwMDkzQkRCMCAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDOUREOTlDMjhGQTE5QTMwMDkzQkRCMCAvKiBXZWJFeHRlbnNpb25BUElS
dW50aW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJFeHRlbnNpb25BUElSdW50aW1lLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM5REQ5QTQyOEZBMTlBMzAwOTNCREIwIC8qIFdlYkV4dGVuc2lv
bkFQSU5hbWVzcGFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5RUJBNUIyMDg3RTc0RTAwMDU0NDI5IC8qIE5h
dGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBOYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL05hdGl2ZVdlYk1v
dXNlRXZlbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTM1MTI3
Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclVJUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC04ODAy
LDU3ICs4NzY3LDYgQEAKIAkJCXBhdGggPSBBdXRvbWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKLQkJMUM1REM0NEQyOTA4N0U3RjAwNjFFQzYyIC8qIEFQSSAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUM1REM0NTAyOTA4QTlE
MDAwNjFFQzYyIC8qIENvY29hICovLAotCQkJCTFDNURDNDY4MjkwQjIzOUMwMDYxRUM2MiAvKiBX
ZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCAqLywKLQkJCQkxQzVEQzQ0RjI5MDg4ODE0MDA2MUVD
NjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmggKi8sCi0JCQkJMUM1REM0NEUyOTA4N0U3
RjAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSU9iamVjdC5oICovLAotCQkJCTFDNURDNDY5Mjkw
QjIzOUMwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElSdW50aW1lLmggKi8sCi0JCQkpOwotCQkJ
cGF0aCA9IEFQSTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTFDNURDNDUw
MjkwOEE5RDAwMDYxRUM2MiAvKiBDb2NvYSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUM1REM0NjUyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lv
bkFQSUV4dGVuc2lvbkNvY29hLm1tICovLAotCQkJCTFDNURDNDUxMjkwOEE5RDAwMDYxRUM2MiAv
KiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2VDb2NvYS5tbSAqLywKLQkJCQkxQzVEQzQ2NDI5MEIy
Mzg5MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZUNvY29hLm1tICovLAotCQkJKTsK
LQkJCXBhdGggPSBDb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTFD
NURDNDU2MjkwOTlGMDEwMDYxRUM2MiAvKiBCaW5kaW5ncyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUM1REM0NTkyOTA5OUYwMTAwNjFFQzYyIC8qIENv
Y29hICovLAotCQkJCTFDNURDNDVDMjkwOUEzNjgwMDYxRUM2MiAvKiBTY3JpcHRzICovLAotCQkJ
CTFDNURDNDVCMjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oICov
LAotCQkJCTFDNURDNDU3MjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBwZXIu
Y3BwICovLAotCQkJCTFDNURDNDU4MjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldy
YXBwZXIuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gQmluZGluZ3M7Ci0JCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwotCQl9OwotCQkxQzVEQzQ1OTI5MDk5RjAxMDA2MUVDNjIgLyogQ29jb2EgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDNURDNDVBMjkw
OTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBwZXJDb2NvYS5tbSAqLywKLQkJCSk7
Ci0JCQlwYXRoID0gQ29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkx
QzVEQzQ1QzI5MDlBMzY4MDA2MUVDNjIgLyogU2NyaXB0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUM1REM0NUQyOTA5QTM2ODAwNjFFQzYyIC8qIENv
ZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtICovLAotCQkJCTFDNURDNDVFMjkwOUEzNjgwMDYxRUM2
MiAvKiBJRExBdHRyaWJ1dGVzLmpzb24gKi8sCi0JCQkpOwotCQkJcGF0aCA9IFNjcmlwdHM7Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkxQzYyNzQ3NjI4OEExRERFMDBDRUQz
QTIgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtODk0MCwxNiArODg1NCw2IEBACiAJCQlwYXRoID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJMUM5REQ5OEYyOEZBMTlBMzAwOTNCREIwIC8qIEludGVyZmFj
ZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDOURE
OTkwMjhGQTE5QTMwMDkzQkRCMCAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaWRsICovLAot
CQkJCTFDOUREOUE0MjhGQTE5QTMwMDkzQkRCMCAvKiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2Uu
aWRsICovLAotCQkJCTFDOUREOTlDMjhGQTE5QTMwMDkzQkRCMCAvKiBXZWJFeHRlbnNpb25BUElS
dW50aW1lLmlkbCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gSW50ZXJmYWNlczsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTFDQjc0NjE5Mjc0MzZERTMwMEYxOTg3NCAvKiBXZWJH
UFUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTIyNSw5
ICs5MTI5LDYgQEAKIAkJMUNDMjNCMUUyODg3MzJGNjAwRDBBNjVBIC8qIEV4dGVuc2lvbnMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFDNURDNDREMjkw
ODdFN0YwMDYxRUM2MiAvKiBBUEkgKi8sCi0JCQkJMUM1REM0NTYyOTA5OUYwMTAwNjFFQzYyIC8q
IEJpbmRpbmdzICovLAotCQkJCTFDOUREOThGMjhGQTE5QTMwMDkzQkRCMCAvKiBJbnRlcmZhY2Vz
ICovLAogCQkJCTFDMDIzNEM0MjhBMDBFOUUwMEFDMUU1QiAvKiBXZWJFeHRlbnNpb25Db250ZXh0
UHJveHkuY3BwICovLAogCQkJCTFDMDIzNEM2MjhBMDBFOUYwMEFDMUU1QiAvKiBXZWJFeHRlbnNp
b25Db250ZXh0UHJveHkuaCAqLywKIAkJCQkxQzAyMzRDNTI4QTAwRTlFMDBBQzFFNUIgLyogV2Vi
RXh0ZW5zaW9uQ29udGV4dFByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtMTMzOTcsMTIgKzEzMjk4
LDYgQEAKIAkJCQkwRjU1NjJFODI3RUUyOEQyMDA5NTM1ODUgLyogR1BVUHJvY2Vzc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRjU1NjJFNDI3RUUyOEQxMDA5NTM1ODUgLyogR1BV
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwRjU1NjJFMTI3RUUyOEQxMDA5NTM1ODUg
LyogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCi0JCQkJMUM1REM0NjIyOTBC
MUM0NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmggKi8sCi0JCQkJMUM1
REM0NjAyOTBCMUM0NDAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLm1tICov
LAotCQkJCTFDNURDNDUzMjkwOEFDMjYwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSU5hbWVz
cGFjZS5oICovLAotCQkJCTFDNURDNDU0MjkwOEFDMjYwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lv
bkFQSU5hbWVzcGFjZS5tbSAqLywKLQkJCQkxQzVEQzQ2MTI5MEIxQzQ3MDA2MUVDNjIgLyogSlNX
ZWJFeHRlbnNpb25BUElSdW50aW1lLmggKi8sCi0JCQkJMUM1REM0NjMyOTBCMUM0NzAwNjFFQzYy
IC8qIEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5tbSAqLywKIAkJCQkyOTg0RjU4NjE2NEJBMDk1
MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKIAkJCQkyOTg0RjU4NzE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkyOTg0RjU3QTE2NEI5MTVGMDA0QkMwQzYgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtMTQ5NzQsOCArMTQ4NjksNiBAQAogCQkJCUEzMUY2MEE0MjVDQzdEQjkwMEFGMTRGNCAvKiBJ
UENTZW1hcGhvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3RjkzMjdDN0NBNTEwMDdBNkNE
MyAvKiBJUENTdHJlYW1UZXN0ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ3
OTA4RjI1MzE1MUNDMDBFQzExQUIgLyogSlNJUENCaW5kaW5nLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkxQzVEQzQ2RjI5MEIyNzI2MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTFDNURDNDZFMjkwQjI3MjYwMDYxRUM2MiAvKiBKU1dlYkV4dGVu
c2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUREQTBBM0ZGMjdFNjZGNUYwMDVFMDg2
RSAvKiBLZXlFdmVudENvZGVzSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTY2M0U1QjI0QUVB
QTJGMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFOTA0OUEyN0JDQjlENDAwOTI5RTdFIC8qIExhdW5jaFNlcnZpY2Vz
U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTE1NDY0LDEwICsxNTM1Nyw2IEBACiAJCQkJQkMxMTFC
NUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZERDUxOTAyOEVGMjhFODAwREYyQTU4IC8qIFdlYkV2ZW50TW9kaWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUREQTBBNDE3MjdFNjcwMzkwMDVFMDg2RSAvKiBXZWJFdmVudFJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUM1REM0NkQyOTBCMjcxRTAwNjFFQzYyIC8qIFdlYkV4dGVu
c2lvbkFQSUV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM1REM0NkMyOTBCMjcxRTAw
NjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUM1REM0NkIyOTBCMjcxRTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSU9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMUM1REM0NkEyOTBCMjcxQTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQ
SVJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMDIzNEQ5MjhBMDFCMUMwMEFDMUU1QiAv
KiBXZWJFeHRlbnNpb25Db250ZXh0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMw
MjM0RDIyOEEwMEZGMDAwQUMxRTVCIC8qIFdlYkV4dGVuc2lvbkNvbnRleHRNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUMwMjM0Q0YyOEEwMEZGMDAwQUMxRTVCIC8qIFdlYkV4dGVuc2lv
bkNvbnRleHRNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTc4NDAsMTAgKzE3
NzI5LDYgQEAKIAkJCQk1MUU5MDQ5NzI3QkNCM0Q5MDA5MjlFN0UgLyogSUNBcHBCdW5kbGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NDIxNDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUw
MDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTFDNURDNDcxMjkwQjMzQTIwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lv
bi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNURDNDU1MjkwOEFDOTAwMDYxRUM2MiAvKiBKU1dl
YkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNURDNDcyMjkw
QjMzQTYwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUubW0gaW4gU291cmNlcyAq
LywKLQkJCQkxQzVEQzQ1RjI5MDlCMDVBMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVy
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyog
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTcx
MENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTE4MTYwLDkgKzE4MDQ1LDYgQEAKIAkJCQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4NjZCMDky
Mzk5QTJENTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQzVEQzQ2NzI5MEIyMzg5
MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW0gaW4gU291cmNlcyAq
LywKLQkJCQkxQzVEQzQ1MjI5MDhBOUQwMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNw
YWNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzVEQzQ2NjI5MEIyMzg5MDA2MUVDNjIg
LyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2
Mjc0NzgyODhBMUUxRDAwQ0VEM0EyIC8qIFdlYkV4dGVuc2lvbkNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUMwMjM0REMyOEEwMjY4QzAwQUMxRTVCIC8qIFdlYkV4dGVuc2lvbkNvbnRleHRD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDMDIzNENEMjhBMDBGRTQwMEFDMUU1QiAvKiBX
ZWJFeHRlbnNpb25Db250ZXh0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL0NvY29hL1dl
YkV4dGVuc2lvbkFQSUV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbkNvY29hLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTIwNDRjYWM3ZjkuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0
ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmICFfX2hhc19mZWF0dXJlKG9iamNfYXJjKQotI2Vycm9yIFRoaXMg
ZmlsZSByZXF1aXJlcyBBUkMuIEFkZCB0aGUgIi1mb2JqYy1hcmMiIGNvbXBpbGVyIGZsYWcgZm9y
IHRoaXMgZmlsZS4KLSNlbmRpZgotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkV4
dGVuc2lvbkFQSUV4dGVuc2lvbi5oIgotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJFeHRlbnNpb25BUElFeHRlbnNpb246Omlz
UHJvcGVydHlBbGxvd2VkKFN0cmluZywgV2ViUGFnZSopCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudC4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU5TVVJMICpXZWJFeHRlbnNpb25BUElFeHRl
bnNpb246OmdldFVSTChOU1N0cmluZyAqcmVzb3VyY2VQYXRoLCBOU1N0cmluZyAqKmVycm9yU3Ry
aW5nKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIG5pbDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0tfV0VCX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkv
Q29jb2EvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlQ29j
b2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNWFhNzg2N2M2YS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9Db2Nv
YS9XZWJFeHRlbnNpb25BUElOYW1lc3BhY2VDb2NvYS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCi0jZXJy
b3IgVGhpcyBmaWxlIHJlcXVpcmVzIEFSQy4gQWRkIHRoZSAiLWZvYmpjLWFyYyIgY29tcGlsZXIg
ZmxhZyBmb3IgdGhpcyBmaWxlLgotI2VuZGlmCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmgiCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVO
U0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJFeHRlbnNpb25BUElFeHRlbnNpb24m
IFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZTo6ZXh0ZW5zaW9uKCkKLXsKLSAgICBpZiAoIW1fZXh0
ZW5zaW9uKQotICAgICAgICBtX2V4dGVuc2lvbiA9IFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbjo6
Y3JlYXRlKGZvck1haW5Xb3JsZCgpLCBydW50aW1lKCkpOwotICAgIHJldHVybiAqbV9leHRlbnNp
b247Ci19Ci0KLVdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUmIFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFj
ZTo6cnVudGltZSgpCi17Ci0gICAgaWYgKCFtX3J1bnRpbWUpCi0gICAgICAgIG1fcnVudGltZSA9
IFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWU6OmNyZWF0ZShmb3JNYWluV29ybGQoKSk7Ci0gICAgcmV0
dXJuICptX3J1bnRpbWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9Db2NvYS9XZWJFeHRl
bnNpb25BUElSdW50aW1lQ29jb2EubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNj
OGEzZmYyZWM2Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9F
eHRlbnNpb25zL0FQSS9Db2NvYS9XZWJFeHRlbnNpb25BUElSdW50aW1lQ29jb2EubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiAhX19oYXNfZmVhdHVy
ZShvYmpjX2FyYykKLSNlcnJvciBUaGlzIGZpbGUgcmVxdWlyZXMgQVJDLiBBZGQgdGhlICItZm9i
amMtYXJjIiBjb21waWxlciBmbGFnIGZvciB0aGlzIGZpbGUuCi0jZW5kaWYKLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJXZWJFeHRlbnNpb25BUElSdW50aW1lLmgiCi0KLSNpZiBFTkFC
TEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYkV4
dGVuc2lvbkFQSVJ1bnRpbWVCYXNlOjpyZXBvcnRFcnJvckZvckNhbGxiYWNrSGFuZGxlcihXZWJF
eHRlbnNpb25DYWxsYmFja0hhbmRsZXImIGNhbGxiYWNrLCBOU1N0cmluZyAqZXJyb3JNZXNzYWdl
LCBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICBBU1NFUlQoZXJyb3JNZXNz
YWdlLmxlbmd0aCk7Ci0gICAgQVNTRVJUKGNvbnRleHRSZWYpOwotCi0gICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpjb250ZXh0
UmVmXTsKLQotICAgIG1fbGFzdEVycm9yQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBtX2xhc3RFcnJv
ciA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6ZXJyb3JNZXNzYWdlIGlu
Q29udGV4dDpjb250ZXh0XTsKLQotICAgIGNhbGxiYWNrLmNhbGwoKTsKLQotICAgIGlmICghbV9s
YXN0RXJyb3JBY2Nlc3NlZCkgewotICAgICAgICAvLyBMb2cgdGhlIGVycm9yIHRvIHRoZSBjb25z
b2xlIGlmIGl0IHdhc24ndCBjaGVja2VkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgSlNWYWx1
ZSAqY29uc29sZUVycm9yRnVuY3Rpb24gPSBjb250ZXh0Lmdsb2JhbE9iamVjdFtAImNvbnNvbGUi
XVtAImVycm9yIl07Ci0gICAgICAgIFtjb25zb2xlRXJyb3JGdW5jdGlvbiBjYWxsV2l0aEFyZ3Vt
ZW50czpAWyBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiVW5jaGVja2VkIHJ1bnRpbWUubGFzdEVycm9yOiAlQCIsIGVycm9y
TWVzc2FnZV0gaW5Db250ZXh0OmNvbnRleHRdIF1dOwotICAgIH0KLQotICAgIG1fbGFzdEVycm9y
QWNjZXNzZWQgPSBmYWxzZTsKLSAgICBtX2xhc3RFcnJvciA9IG5pbDsKLX0KLQotTlNVUkwgKldl
YkV4dGVuc2lvbkFQSVJ1bnRpbWU6OmdldFVSTChOU1N0cmluZyAqcmVzb3VyY2VQYXRoLCBOU1N0
cmluZyAqKmVycm9yU3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0
dXJuIG5pbDsKLX0KLQotTlNTdHJpbmcgKldlYkV4dGVuc2lvbkFQSVJ1bnRpbWU6OmdldE1hbmlm
ZXN0KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7Ci19Ci0K
LU5TU3RyaW5nICpXZWJFeHRlbnNpb25BUElSdW50aW1lOjpydW50aW1lSWRlbnRpZmllcigpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gbmlsOwotfQotCi12b2lkIFdl
YkV4dGVuc2lvbkFQSVJ1bnRpbWU6OmdldFBsYXRmb3JtSW5mbyhSZWY8V2ViRXh0ZW5zaW9uQ2Fs
bGJhY2tIYW5kbGVyPiYmIGNhbGxiYWNrKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBvc1ZhbHVlID0gQCJtYWMiOwotI2VsaWYgUExBVEZPUk0oSU9T
KQotICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IG9zVmFsdWUgPSBAImlvcyI7Ci0jZWxzZQot
I2Vycm9yIFVua25vd24gb3BlcmF0aW5nIHN5c3RlbS4KLSNlbmRpZgotCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBhcmNoVmFsdWUgPSBAIng4Ni02NCI7Ci0j
ZWxpZiBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YXJjaFZhbHVlID0gQCJhcm0iOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIHByb2Nlc3NvciBhcmNo
aXRlY3R1cmUuCi0jZW5kaWYKLQotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBsYXRmb3JtSW5m
byA9IEB7Ci0gICAgICAgIEAib3MiOiBvc1ZhbHVlLAotICAgICAgICBAImFyY2giOiBhcmNoVmFs
dWUKLSAgICB9OwotCi0gICAgY2FsbGJhY2stPmNhbGwocGxhdGZvcm1JbmZvKTsKLX0KLQotSlNW
YWx1ZVJlZiBXZWJFeHRlbnNpb25BUElSdW50aW1lOjpsYXN0RXJyb3IoKQotewotICAgIG1fbGFz
dEVycm9yQWNjZXNzZWQgPSB0cnVlOwotCi0gICAgcmV0dXJuIG1fbGFzdEVycm9yLmdldCgpLkpT
VmFsdWVSZWY7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2ZjOWUxZTY0NzUuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9u
QVBJRXh0ZW5zaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLSNpbmNs
dWRlICJKU1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIldlYkV4dGVuc2lv
bkFQSU9iamVjdC5oIgotCi1PQkpDX0NMQVNTIE5TU3RyaW5nOwotT0JKQ19DTEFTUyBOU1VSTDsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYkV4dGVu
c2lvbkFQSUV4dGVuc2lvbiA6IHB1YmxpYyBXZWJFeHRlbnNpb25BUElPYmplY3QsIHB1YmxpYyBK
U1dlYkV4dGVuc2lvbldyYXBwYWJsZSB7Ci0gICAgV0VCX0VYVEVOU0lPTl9ERUNMQVJFX0pTX1dS
QVBQRVJfQ0xBU1MoV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLCBleHRlbnNpb24pOwotCi1wdWJs
aWM6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBpc1Byb3BlcnR5QWxsb3dlZChTdHJp
bmcgcHJvcGVydHlOYW1lLCBXZWJQYWdlKik7Ci0KLSAgICBOU1VSTCAqZ2V0VVJMKE5TU3RyaW5n
ICpyZXNvdXJjZVBhdGgsIE5TU3RyaW5nICoqZXJyb3JTdHJpbmcpOwotI2VuZGlmCi19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXS19XRUJfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9X
ZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTk3MjM5ZjdhODc1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5jbHVkZSAiSlNXZWJFeHRlbnNp
b25BUElOYW1lc3BhY2UuaCIKLSNpbmNsdWRlICJXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCIK
LSNpbmNsdWRlICJXZWJFeHRlbnNpb25BUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJFeHRlbnNp
b25BUElSdW50aW1lLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJFeHRlbnNp
b25BUElFeHRlbnNpb247Ci1jbGFzcyBXZWJFeHRlbnNpb25BUElSdW50aW1lOwotCi1jbGFzcyBX
ZWJFeHRlbnNpb25BUElOYW1lc3BhY2UgOiBwdWJsaWMgV2ViRXh0ZW5zaW9uQVBJT2JqZWN0LCBw
dWJsaWMgSlNXZWJFeHRlbnNpb25XcmFwcGFibGUgewotICAgIFdFQl9FWFRFTlNJT05fREVDTEFS
RV9KU19XUkFQUEVSX0NMQVNTKFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZSwgbmFtZXNwYWNlKTsK
LQotcHVibGljOgotICAgIFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbiYgZXh0ZW5zaW9uKCk7Ci0g
ICAgV2ViRXh0ZW5zaW9uQVBJUnVudGltZSYgcnVudGltZSgpIGZpbmFsOwotCi1wcml2YXRlOgot
ICAgIFJlZlB0cjxXZWJFeHRlbnNpb25BUElFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOwotICAgIFJl
ZlB0cjxXZWJFeHRlbnNpb25BUElSdW50aW1lPiBtX3J1bnRpbWU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNp
b25BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9X
ZWJFeHRlbnNpb25BUElPYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Vi
NDM2ZmZkNTYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4
dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSU9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXS19X
RUJfRVhURU5TSU9OUykKLQotI2luY2x1ZGUgIkpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlLmgiCi0j
aW5jbHVkZSAiSlNXZWJFeHRlbnNpb25XcmFwcGVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJFeHRlbnNpb25BUElSdW50aW1lOwotCi1jbGFzcyBXZWJFeHRlbnNpb25BUElPYmplY3Qgewot
cHVibGljOgotICAgIGVudW0gY2xhc3MgRm9yTWFpbldvcmxkIDogYm9vbCB7IE5vLCBZZXMgfTsK
LQotICAgIFdlYkV4dGVuc2lvbkFQSU9iamVjdChGb3JNYWluV29ybGQgZm9yTWFpbldvcmxkKQot
ICAgICAgICA6IG1fZm9yTWFpbldvcmxkKGZvck1haW5Xb3JsZCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViRXh0ZW5zaW9uQVBJT2JqZWN0KEZvck1haW5Xb3JsZCBmb3JNYWluV29ybGQsIFdlYkV4
dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKQotICAgICAgICA6IG1fZm9yTWFpbldvcmxk
KGZvck1haW5Xb3JsZCkKLSAgICAgICAgLCBtX3J1bnRpbWUoJnJ1bnRpbWUpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgfldlYkV4dGVuc2lvbkFQSU9iamVjdCgpID0gZGVmYXVsdDsKLQot
ICAgIEZvck1haW5Xb3JsZCBmb3JNYWluV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2Zvck1haW5X
b3JsZDsgfQotICAgIGJvb2wgaXNGb3JNYWluV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2Zvck1h
aW5Xb3JsZCA9PSBGb3JNYWluV29ybGQ6OlllczsgfQotCi0gICAgdmlydHVhbCBXZWJFeHRlbnNp
b25BUElSdW50aW1lQmFzZSYgcnVudGltZSgpIHsgcmV0dXJuICptX3J1bnRpbWU7IH0KLQotcHJp
dmF0ZToKLSAgICBGb3JNYWluV29ybGQgbV9mb3JNYWluV29ybGQgPSBGb3JNYWluV29ybGQ6Olll
czsKLSAgICBSZWZQdHI8V2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2U+IG1fcnVudGltZTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZGVmaW5lIFdFQl9FWFRFTlNJT05fREVDTEFS
RV9KU19XUkFQUEVSX0NMQVNTKEltcGxDbGFzcywgU2NyaXB0Q2xhc3MpIFwKLXB1YmxpYzogXAot
ICAgIHVzaW5nIEZvck1haW5Xb3JsZCA9IFdlYkV4dGVuc2lvbkFQSU9iamVjdDo6Rm9yTWFpbldv
cmxkOyBcCi1cCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gXAotICAgIHN0YXRpYyBS
ZWY8SW1wbENsYXNzPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIFwKLSAgICB7IFwKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1wbENsYXNzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOyBcCi0gICAgfSBcCi1cCi0gICAgdmlydHVhbCB+SW1wbENsYXNzKCkgPSBkZWZhdWx0OyBc
Ci1cCi1wcml2YXRlOiBcCi0gICAgZXhwbGljaXQgSW1wbENsYXNzKEZvck1haW5Xb3JsZCBmb3JN
YWluV29ybGQpIFwKLSAgICAgICAgOiBXZWJFeHRlbnNpb25BUElPYmplY3QoZm9yTWFpbldvcmxk
KSBcCi0gICAgeyBcCi0gICAgfSBcCi1cCi0gICAgZXhwbGljaXQgSW1wbENsYXNzKEZvck1haW5X
b3JsZCBmb3JNYWluV29ybGQsIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKSBc
Ci0gICAgICAgIDogV2ViRXh0ZW5zaW9uQVBJT2JqZWN0KGZvck1haW5Xb3JsZCwgcnVudGltZSkg
XAotICAgIHsgXAotICAgIH0gXAotXAotICAgIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCkgZmlu
YWwgeyByZXR1cm4gSlMjI0ltcGxDbGFzczo6U2NyaXB0Q2xhc3MjI0NsYXNzKCk7IH0gXAotXAot
ICAgIHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gVU5V
U0VEX1RZUEVfQUxJQVMgPSBpbnQKLQotLy8gRW5kIG9mIG1hY3JvLgotCi0vLyBOZWVkcyB0byBi
ZSBhdCB0aGUgZW5kIHRvIGFsbG93IFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaCB0byBpbmNsdWRl
IHRoaXMgaGVhZGVyCi0vLyBhbmQgYXZvaWQgaGF2aW5nIGFsbCBBUElzIG5lZWQgdG8gaW5jbHVk
ZSBpdC4KLSNpbmNsdWRlICJXZWJFeHRlbnNpb25BUElSdW50aW1lLmgiCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ2MDQ5ZWM1OGJiLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lv
bkFQSVJ1bnRpbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLQotI2luY2x1
ZGUgIkpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oIgotI2luY2x1ZGUgIldlYkV4dGVuc2lvbkFQ
SU9iamVjdC5oIgotCi1PQkpDX0NMQVNTIE5TU3RyaW5nOwotT0JKQ19DTEFTUyBOU1VSTDsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWU7Ci0KLWNs
YXNzIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlIDogcHVibGljIEpTV2ViRXh0ZW5zaW9uV3Jh
cHBhYmxlIHsKLXB1YmxpYzoKLSAgICB2b2lkIHJlcG9ydEVycm9yRm9yQ2FsbGJhY2tIYW5kbGVy
KFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlciYsIE5TU3RyaW5nICplcnJvciwgSlNHbG9iYWxD
b250ZXh0UmVmKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV2ViRXh0ZW5zaW9uQVBJ
UnVudGltZTsKLQotICAgIGJvb2wgbV9sYXN0RXJyb3JBY2Nlc3NlZCA9IGZhbHNlOwotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPEpTVmFsdWU+IG1fbGFzdEVycm9yOwotI2Vu
ZGlmCi19OwotCi1jbGFzcyBXZWJFeHRlbnNpb25BUElSdW50aW1lIDogcHVibGljIFdlYkV4dGVu
c2lvbkFQSU9iamVjdCwgcHVibGljIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlIHsKLSAgICBX
RUJfRVhURU5TSU9OX0RFQ0xBUkVfSlNfV1JBUFBFUl9DTEFTUyhXZWJFeHRlbnNpb25BUElSdW50
aW1lLCBydW50aW1lKTsKLQotcHVibGljOgotICAgIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUmIHJ1
bnRpbWUoKSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgTlNVUkwgKmdldFVSTChOU1N0cmluZyAqcmVzb3VyY2VQYXRoLCBOU1N0cmluZyAqKmVycm9y
U3RyaW5nKTsKLQotICAgIE5TU3RyaW5nICpnZXRNYW5pZmVzdCgpOwotCi0gICAgTlNTdHJpbmcg
KnJ1bnRpbWVJZGVudGlmaWVyKCk7Ci0KLSAgICB2b2lkIGdldFBsYXRmb3JtSW5mbyhSZWY8V2Vi
RXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyPiYmKTsKLQotICAgIEpTVmFsdWVSZWYgbGFzdEVycm9y
KCk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvQ29jb2EvSlNXZWJFeHRlbnNpb25XcmFwcGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9Db2NvYS9K
U1dlYkV4dGVuc2lvbldyYXBwZXJDb2NvYS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2E2NjBmMWYwMGRhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvQ29jb2EvSlNXZWJFeHRlbnNpb25XcmFwcGVyQ29jb2Eu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiAhX19o
YXNfZmVhdHVyZShvYmpjX2FyYykKLSNlcnJvciBUaGlzIGZpbGUgcmVxdWlyZXMgQVJDLiBBZGQg
dGhlICItZm9iamMtYXJjIiBjb21waWxlciBmbGFnIGZvciB0aGlzIGZpbGUuCi0jZW5kaWYKLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJKU1dlYkV4dGVuc2lvbldyYXBwZXIuaCIKLQot
I2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLQotI2ltcG9ydCAiQ29jb2FIZWxwZXJzLmgi
Ci0jaW1wb3J0ICJKU1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oIgotI2ltcG9ydCAiV2ViRXh0ZW5z
aW9uQVBJUnVudGltZS5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcjo6V2Vi
RXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBjYWxsYmFja0Z1bmN0aW9uLCBXZWJFeHRlbnNpb25BUElSdW50aW1lQmFzZSYgcnVudGltZSkK
LSAgICA6IG1fY2FsbGJhY2tGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uKQotICAgICwgbV9nbG9i
YWxDb250ZXh0KEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoY29udGV4dCkpCi0gICAgLCBtX3J1
bnRpbWUoJnJ1bnRpbWUpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjYWxs
YmFja0Z1bmN0aW9uKTsKLQotICAgIEpTVmFsdWVQcm90ZWN0KG1fZ2xvYmFsQ29udGV4dC5nZXQo
KSwgbV9jYWxsYmFja0Z1bmN0aW9uKTsKLX0KLQotV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVy
OjpXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIFdlYkV4
dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKQotICAgIDogbV9nbG9iYWxDb250ZXh0KEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoY29udGV4dCkpCi0gICAgLCBtX3J1bnRpbWUoJnJ1bnRp
bWUpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotfQotCi1XZWJFeHRlbnNpb25DYWxsYmFja0hh
bmRsZXI6OldlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcihKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgcmVzb2x2ZUZ1bmN0aW9uLCBKU09iamVjdFJlZiByZWplY3RGdW5jdGlvbikK
LSAgICA6IG1fY2FsbGJhY2tGdW5jdGlvbihyZXNvbHZlRnVuY3Rpb24pCi0gICAgLCBtX3JlamVj
dEZ1bmN0aW9uKHJlamVjdEZ1bmN0aW9uKQotICAgICwgbV9nbG9iYWxDb250ZXh0KEpTQ29udGV4
dEdldEdsb2JhbENvbnRleHQoY29udGV4dCkpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAg
IEFTU0VSVChyZXNvbHZlRnVuY3Rpb24pOwotICAgIEFTU0VSVChyZWplY3RGdW5jdGlvbik7Ci0K
LSAgICBKU1ZhbHVlUHJvdGVjdChtX2dsb2JhbENvbnRleHQuZ2V0KCksIG1fY2FsbGJhY2tGdW5j
dGlvbik7Ci0gICAgSlNWYWx1ZVByb3RlY3QobV9nbG9iYWxDb250ZXh0LmdldCgpLCBtX3JlamVj
dEZ1bmN0aW9uKTsKLX0KLQotV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyOjp+V2ViRXh0ZW5z
aW9uQ2FsbGJhY2tIYW5kbGVyKCkKLXsKLSAgICBpZiAobV9jYWxsYmFja0Z1bmN0aW9uKQotICAg
ICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fZ2xvYmFsQ29udGV4dC5nZXQoKSwgbV9jYWxsYmFja0Z1
bmN0aW9uKTsKLQotICAgIGlmIChtX3JlamVjdEZ1bmN0aW9uKQotICAgICAgICBKU1ZhbHVlVW5w
cm90ZWN0KG1fZ2xvYmFsQ29udGV4dC5nZXQoKSwgbV9yZWplY3RGdW5jdGlvbik7Ci19Ci0KLUpT
VmFsdWUgKldlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcjo6Y2FsbGJhY2tGdW5jdGlvbigpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2dsb2JhbENvbnRleHQgfHwgIW1fY2FsbGJhY2tGdW5jdGlvbikK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOm1fY2FsbGJhY2tGdW5jdGlvbiBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0
aEpTR2xvYmFsQ29udGV4dFJlZjptX2dsb2JhbENvbnRleHQuZ2V0KCldXTsKLX0KLQotdGVtcGxh
dGU8c2l6ZV90IEFyZ3VtZW50Q291bnQ+Ci1pZCBjYWxsV2l0aEFyZ3VtZW50cyhKU09iamVjdFJl
ZiBjYWxsYmFja0Z1bmN0aW9uLCBKU1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+JiBnbG9i
YWxDb250ZXh0LCBzdGQ6OmFycmF5PEpTVmFsdWVSZWYsIEFyZ3VtZW50Q291bnQ+JiYgYXJndW1l
bnRzKQotewotICAgIGlmICghZ2xvYmFsQ29udGV4dCB8fCAhY2FsbGJhY2tGdW5jdGlvbikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gdG9OU09iamVjdChnbG9iYWxDb250ZXh0Lmdl
dCgpLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGdsb2JhbENvbnRleHQuZ2V0KCksIGNhbGxiYWNr
RnVuY3Rpb24sIG51bGxwdHIsIEFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksIG51bGxw
dHIpKTsKLX0KLQotdm9pZCBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6OnJlcG9ydEVycm9y
KE5TU3RyaW5nICptZXNzYWdlKQotewotICAgIGlmICghbV9nbG9iYWxDb250ZXh0KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9ydW50aW1lKSB7Ci0gICAgICAgIG1fcnVudGltZS0+cmVw
b3J0RXJyb3JGb3JDYWxsYmFja0hhbmRsZXIoKnRoaXMsIG1lc3NhZ2UsIG1fZ2xvYmFsQ29udGV4
dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fcmVqZWN0RnVu
Y3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmVycm9yID0gW0pTVmFsdWUg
dmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVzc2FnZTptZXNzYWdlIGluQ29udGV4dDpbSlNDb250ZXh0
IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fZ2xvYmFsQ29udGV4dC5nZXQoKV1dOwot
Ci0gICAgY2FsbFdpdGhBcmd1bWVudHM8MT4obV9yZWplY3RGdW5jdGlvbiwgbV9nbG9iYWxDb250
ZXh0LCB7Ci0gICAgICAgIHRvSlNWYWx1ZShtX2dsb2JhbENvbnRleHQuZ2V0KCksIGVycm9yKQot
ICAgIH0pOwotfQotCi1pZCBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6OmNhbGwoKQotewot
ICAgIHJldHVybiBjYWxsV2l0aEFyZ3VtZW50czwwPihtX2NhbGxiYWNrRnVuY3Rpb24sIG1fZ2xv
YmFsQ29udGV4dCwgeyB9KTsKLX0KLQotaWQgV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyOjpj
YWxsKGlkIGFyZ3VtZW50KQotewotICAgIHJldHVybiBjYWxsV2l0aEFyZ3VtZW50czwxPihtX2Nh
bGxiYWNrRnVuY3Rpb24sIG1fZ2xvYmFsQ29udGV4dCwgewotICAgICAgICB0b0pTVmFsdWUobV9n
bG9iYWxDb250ZXh0LmdldCgpLCBhcmd1bWVudCkKLSAgICB9KTsKLX0KLQotaWQgV2ViRXh0ZW5z
aW9uQ2FsbGJhY2tIYW5kbGVyOjpjYWxsKGlkIGFyZ3VtZW50T25lLCBpZCBhcmd1bWVudFR3bykK
LXsKLSAgICByZXR1cm4gY2FsbFdpdGhBcmd1bWVudHM8Mj4obV9jYWxsYmFja0Z1bmN0aW9uLCBt
X2dsb2JhbENvbnRleHQsIHsKLSAgICAgICAgdG9KU1ZhbHVlKG1fZ2xvYmFsQ29udGV4dC5nZXQo
KSwgYXJndW1lbnRPbmUpLAotICAgICAgICB0b0pTVmFsdWUobV9nbG9iYWxDb250ZXh0LmdldCgp
LCBhcmd1bWVudFR3bykKLSAgICB9KTsKLX0KLQotaWQgV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5k
bGVyOjpjYWxsKGlkIGFyZ3VtZW50T25lLCBpZCBhcmd1bWVudFR3bywgaWQgYXJndW1lbnRUaHJl
ZSkKLXsKLSAgICByZXR1cm4gY2FsbFdpdGhBcmd1bWVudHM8Mz4obV9jYWxsYmFja0Z1bmN0aW9u
LCBtX2dsb2JhbENvbnRleHQsIHsKLSAgICAgICAgdG9KU1ZhbHVlKG1fZ2xvYmFsQ29udGV4dC5n
ZXQoKSwgYXJndW1lbnRPbmUpLAotICAgICAgICB0b0pTVmFsdWUobV9nbG9iYWxDb250ZXh0Lmdl
dCgpLCBhcmd1bWVudFR3byksCi0gICAgICAgIHRvSlNWYWx1ZShtX2dsb2JhbENvbnRleHQuZ2V0
KCksIGFyZ3VtZW50VGhyZWUpCi0gICAgfSk7Ci19Ci0KLXN0YXRpYyBKU09iamVjdFJlZiBmdW5j
dGlvbk9iamVjdEJ5TmFtZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0
UmVmLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwot
Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwotICAgIEpTVmFsdWVSZWYgZnVu
Y3Rpb24gPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdFJlZiwgdG9KU1N0cmlu
ZyhmdW5jdGlvbk5hbWUpLmdldCgpLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uIHx8
ICFmdW5jdGlvbiB8fCAhSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IEpTVmFs
dWVUb09iamVjdChjb250ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2Vw
dGlvbiB8fCAhZnVuY3Rpb25SZWYgfHwgIUpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBmdW5j
dGlvblJlZikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9u
UmVmOwotfQotCi1pZCB0b05TT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IHZhbHVlUmVmLCBDbGFzcyByZXF1aXJlZENsYXNzKQotewotICAgIEFTU0VSVChjb250ZXh0KTsK
LQotICAgIGlmICghdmFsdWVSZWYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBKU1ZhbHVl
ICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dmFsdWVSZWYgaW5Db250ZXh0
OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6SlNDb250ZXh0R2V0R2xv
YmFsQ29udGV4dChjb250ZXh0KV1dOwotCi0gICAgLy8gRm9yIGZ1bmN0aW9ucyBhbmQgcHJvbWlz
ZXMgKCJ0aGVuYWJsZSIgb2JqZWN0cyksIHJldHVybiB0aGUgSlNWYWx1ZSBpbnN0ZWFkIG9mIGNh
bGxpbmcgdG9PYmplY3Qgc2luY2UgdGhhdCB3aWxsIGNvbnZlcnQgaXQgdG8gYW4gZW1wdHkgTlNE
aWN0aW9uYXJ5IGFuZCBiZSB1c2VsZXNzLgotICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4
dCwgdmFsdWVSZWYpKSB7Ci0gICAgICAgIEpTT2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVU
b09iamVjdChjb250ZXh0LCB2YWx1ZVJlZiwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChKU09iamVj
dElzRnVuY3Rpb24oY29udGV4dCwgb2JqZWN0UmVmKSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKLQotICAgICAgICBpZiAodmFsdWUuX3RoZW5hYmxlKQotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgIH0KLQotICAgIGlkIHJlc3VsdCA9IFt2YWx1ZSB0b09iamVjdF07Ci0gICAgTlNB
cnJheSAqcmVzdWx0QXJyYXkgPSBkeW5hbWljX29iamNfY2FzdDxOU0FycmF5PihyZXN1bHQpOwot
ICAgIGlmICghcmVxdWlyZWRDbGFzcyB8fCAhcmVzdWx0QXJyYXkpCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0KLSAgICByZXR1cm4gZmlsdGVyT2JqZWN0cyhyZXN1bHRBcnJheSwgXmJvb2wgKGlk
LCBpZCB2YWx1ZSkgewotICAgICAgICByZXR1cm4gW3ZhbHVlIGlzS2luZE9mQ2xhc3M6cmVxdWly
ZWRDbGFzc107Ci0gICAgfSk7Ci19Ci0KLU5TU3RyaW5nICp0b05TU3RyaW5nKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBOdWxsU3RyaW5nUG9saWN5IG51bGxTdHJpbmdQ
b2xpY3kpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAg
ICBzd2l0Y2ggKG51bGxTdHJpbmdQb2xpY3kpIHsKLSAgICBjYXNlIE51bGxTdHJpbmdQb2xpY3k6
Ok51bGxBbmRVbmRlZmluZWRBc051bGxTdHJpbmc6Ci0gICAgICAgIGlmIChKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgdmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAg
RkFMTFRIUk9VR0g7Ci0KLSAgICBjYXNlIE51bGxTdHJpbmdQb2xpY3k6Ok51bGxBc051bGxTdHJp
bmc6Ci0gICAgICAgIGlmIChKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSkKLSAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgIEZBTExUSFJPVUdIOwotCi0gICAgY2FzZSBOdWxsU3Ry
aW5nUG9saWN5OjpOb051bGxTdHJpbmc6Ci0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBzdHJpbmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsK
LSAgICAgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKG51
bGxwdHIsIHN0cmluZy5nZXQoKSkpOwotICAgIH0KLX0KLQotTlNEaWN0aW9uYXJ5ICp0b05TRGlj
dGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICBB
U1NFUlQoY29udGV4dCk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCB2YWx1
ZSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsIG51bGxwdHIpOwotICAgIGlmICghb2JqZWN0KQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0
eU5hbWVzID0gSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBvYmplY3QpOwotICAg
IHNpemVfdCBwcm9wZXJ0eU5hbWVDb3VudCA9IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3VudChw
cm9wZXJ0eU5hbWVzKTsKLQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3VsdCA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6cHJvcGVydHlOYW1lQ291bnRd
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVDb3VudDsgKytpKSB7
Ci0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eU5hbWUgPSBKU1Byb3Bl
cnR5TmFtZUFycmF5R2V0TmFtZUF0SW5kZXgocHJvcGVydHlOYW1lcywgaSk7Ci0gICAgICAgIEpT
VmFsdWVSZWYgaXRlbSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBwcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOwotCi0gICAgICAgIC8vIENocm9tZSBkb2VzIG5vdCBpbmNsdWRl
IG51bGwgdmFsdWVzIGluIGRpY3Rpb25hcmllcyBmb3Igd2ViIGV4dGVuc2lvbnMuCi0gICAgICAg
IGlmIChKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGl0ZW0pKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgaWYgKGlkIHZhbHVlID0gdG9OU09iamVjdChjb250ZXh0LCBpdGVtKSkKLSAg
ICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OnZhbHVlIGZvcktleTp0b05TU3RyaW5nKHByb3Bl
cnR5TmFtZS5nZXQoKSldOwotICAgIH0KLQotICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNl
KHByb3BlcnR5TmFtZXMpOwotCi0gICAgcmV0dXJuIFtyZXN1bHQgY29weV07Ci19Ci0KLUpTVmFs
dWVSZWYgdG9KU1ZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU1N0cmluZyAqc3RyaW5nLCBO
dWxsT3JFbXB0eVN0cmluZyBudWxsT3JFbXB0eVN0cmluZykKLXsKLSAgICBBU1NFUlQoY29udGV4
dCk7Ci0KLSAgICBzd2l0Y2ggKG51bGxPckVtcHR5U3RyaW5nKSB7Ci0gICAgY2FzZSBOdWxsT3JF
bXB0eVN0cmluZzo6TnVsbFN0cmluZ0FzTnVsbDoKLSAgICAgICAgaWYgKCFzdHJpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdWxsKGNvbnRleHQpOwotICAgICAgICBGQUxMVEhS
T1VHSDsKLQotICAgIGNhc2UgTnVsbE9yRW1wdHlTdHJpbmc6Ok51bGxTdHJpbmdBc0VtcHR5U3Ry
aW5nOgotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdG9KU1N0cmlu
ZyhzdHJpbmcpLmdldCgpKTsKLSAgICB9Ci19Ci0KLUpTVmFsdWVSZWYgdG9KU1ZhbHVlKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBOU1VSTCAqdXJsLCBOdWxsT3JFbXB0eVN0cmluZyBudWxsT3JFbXB0
eVN0cmluZykKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICByZXR1cm4gdG9KU1ZhbHVl
KGNvbnRleHQsIHVybC5hYnNvbHV0ZVVSTC5hYnNvbHV0ZVN0cmluZywgbnVsbE9yRW1wdHlTdHJp
bmcpOwotfQotCi1OU1N0cmluZyAqdG9OU1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCi17Ci0g
ICAgcmV0dXJuIHN0cmluZyA/IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5n
KG51bGxwdHIsIHN0cmluZykpIDogbmlsOwotfQotCi1SZWZQdHI8V2ViRXh0ZW5zaW9uQ2FsbGJh
Y2tIYW5kbGVyPiB0b0pTQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIGNhbGxiYWNrVmFsdWUsIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1l
KQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlmICghY2FsbGJhY2tWYWx1ZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBKU09iamVjdFJlZiBjYWxsYmFja0Z1bmN0aW9u
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGNhbGxiYWNrVmFsdWUsIG51bGxwdHIpOwotICAg
IGlmICghY2FsbGJhY2tGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBp
ZiAoIUpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFja0Z1bmN0aW9uKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5k
bGVyOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2tGdW5jdGlvbiwgcnVudGltZSk7Ci19Ci0KLUpT
VmFsdWVSZWYgZGVzZXJpYWxpemVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU1N0
cmluZyAqanNvblN0cmluZykKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICBpZiAoIWpz
b25TdHJpbmcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci0KLSAg
ICBpZiAoSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoY29udGV4
dCwgdG9KU1N0cmluZyhqc29uU3RyaW5nKS5nZXQoKSkpCi0gICAgICAgIHJldHVybiB2YWx1ZTsK
LQotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci19Ci0KLU5TU3RyaW5nICpz
ZXJpYWxpemVKU09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICBp
ZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzdHJpbmcoQWRvcHQsIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKGNvbnRleHQsIG9i
amVjdCwgMCwgZXhjZXB0aW9uKSk7Ci0KLSAgICByZXR1cm4gdG9OU1N0cmluZyhzdHJpbmcuZ2V0
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQotQGltcGxlbWVudGF0aW9uIEpTVmFsdWUgKFRoZW5hYmxlRXh0cmFzKQotCi0tIChCT09M
KV9pc1RoZW5hYmxlCi17Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBzZWxmLmNv
bnRleHQuSlNHbG9iYWxDb250ZXh0UmVmOwotICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSBzZWxm
LkpTVmFsdWVSZWY7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCB2YWx1ZVJl
ZikpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIC8vIEEgUHJvbWlzZSBvYmplY3Qgb3IgYW55
ICJ0aGVuYWJsZSIgb2JqZWN0IGp1c3QgbmVlZHMgdG8gaGF2ZSBhICJ0aGVuIiBmdW5jdGlvbi4K
LSAgICByZXR1cm4gISFmdW5jdGlvbk9iamVjdEJ5TmFtZShjb250ZXh0LCBKU1ZhbHVlVG9PYmpl
Y3QoY29udGV4dCwgdmFsdWVSZWYsIG51bGxwdHIpLCAidGhlbiIpOwotfQotCi0tICh2b2lkKV9h
d2FpdFRoZW5hYmxlUmVzb2x1dGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQg
cmVzdWx0LCBpZCBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBBU1NFUlQoc2VsZi5f
dGhlbmFibGUpOwotCi0gICAgYXV0byByZXNvbHZlQmxvY2sgPSBeKGlkIHJlc3VsdCkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQsIG5pbCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
cmVqZWN0QmxvY2sgPSBeKGlkIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5p
bCwgZXJyb3IpOwotICAgIH07Ci0KLSAgICBbc2VsZiBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRo
QXJndW1lbnRzOkBbIHJlc29sdmVCbG9jaywgcmVqZWN0QmxvY2sgXV07Ci19Ci0KLUBlbmQKLQot
I2VuZGlmIC8vIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBh
YmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dl
YkV4dGVuc2lvbldyYXBwYWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ0
YTI2MjliM2MuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0
ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDbGFzcyogSlNDbGFzc1JlZjsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8
SlNXZWJFeHRlbnNpb25XcmFwcGFibGU+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5KU1dlYkV4
dGVuc2lvbldyYXBwYWJsZSgpIHsgfQotCi0gICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJD
bGFzcygpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3Jh
cHBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NWVjMTZlZjU3Zi4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRp
bmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTV2ViRXh0
ZW5zaW9uV3JhcHBlci5oIgotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5j
bHVkZSAiSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdFJlZi5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotSlNWYWx1ZVJlZiBKU1dl
YkV4dGVuc2lvbldyYXBwZXI6OndyYXAoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTV2ViRXh0ZW5z
aW9uV3JhcHBhYmxlKiBvYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgaWYg
KCFvYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci0KLSAg
ICBhdXRvIG9iamVjdENsYXNzID0gb2JqZWN0LT53cmFwcGVyQ2xhc3MoKTsKLSAgICBBU1NFUlQo
b2JqZWN0Q2xhc3MpOwotCi0gICAgYXV0byB3cmFwcGVyID0gSlNPYmplY3RNYWtlKGNvbnRleHQs
IG9iamVjdENsYXNzLCBvYmplY3QpOwotICAgIEFTU0VSVCh3cmFwcGVyKTsKLQotICAgIHJldHVy
biB3cmFwcGVyOwotfQotCi1KU1dlYkV4dGVuc2lvbldyYXBwYWJsZSogSlNXZWJFeHRlbnNpb25X
cmFwcGVyOjp1bndyYXAoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17
Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpZiAoIWNv
bnRleHQgfHwgIXZhbHVlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU1dlYkV4dGVuc2lvbldyYXBwYWJsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsIG51bGxwdHIpKSk7Ci19Ci0KLXN0YXRpYyBK
U1dlYkV4dGVuc2lvbldyYXBwYWJsZSogdW53cmFwT2JqZWN0KEpTT2JqZWN0UmVmIG9iamVjdCkK
LXsKLSAgICBBU1NFUlQob2JqZWN0KTsKLQotICAgIGF1dG8qIHdyYXBwYWJsZSA9IHN0YXRpY19j
YXN0PEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkp
OwotICAgIEFTU0VSVCh3cmFwcGFibGUpOwotICAgIHJldHVybiB3cmFwcGFibGU7Ci19Ci0KLXZv
aWQgSlNXZWJFeHRlbnNpb25XcmFwcGVyOjppbml0aWFsaXplKEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYgb2JqZWN0KQotewotICAgIGlmIChhdXRvKiB3cmFwcGFibGUgPSB1bndyYXBPYmplY3Qo
b2JqZWN0KSkKLSAgICAgICAgd3JhcHBhYmxlLT5yZWYoKTsKLX0KLQotdm9pZCBKU1dlYkV4dGVu
c2lvbldyYXBwZXI6OmZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBpZiAoYXV0
byogd3JhcHBhYmxlID0gdW53cmFwT2JqZWN0KG9iamVjdCkpCi0gICAgICAgIHdyYXBwYWJsZS0+
ZGVyZWYoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWM2Mzc2ZTczYWMuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dl
YkV4dGVuc2lvbldyYXBwZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0K
LSNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgotCi1PQkpDX0NMQVNTIEpTVmFsdWU7Ci1PQkpDX0NMQVNTIE5T
U3RyaW5nOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgSlNXZWJFeHRlbnNpb25XcmFw
cGFibGU7Ci1jbGFzcyBXZWJFeHRlbnNpb25BUElSdW50aW1lQmFzZTsKLWNsYXNzIFdlYkV4dGVu
c2lvbkNhbGxiYWNrSGFuZGxlcjsKLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIEpTV2ViRXh0ZW5z
aW9uV3JhcHBlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIEpTVmFsdWVSZWYgd3JhcChKU0NvbnRl
eHRSZWYsIEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlKik7Ci0gICAgc3RhdGljIEpTV2ViRXh0ZW5z
aW9uV3JhcHBhYmxlKiB1bndyYXAoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKLQotICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZik7Ci0gICAgc3Rh
dGljIHZvaWQgZmluYWxpemUoSlNPYmplY3RSZWYpOwotfTsKLQotY2xhc3MgV2ViRXh0ZW5zaW9u
Q2FsbGJhY2tIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRXh0ZW5zaW9uQ2FsbGJhY2tI
YW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBz
dGF0aWMgUmVmPFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRXh0ZW5zaW9uQ2Fs
bGJhY2tIYW5kbGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwotICAgIH0KLQotICAg
IH5XZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXIoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBnbG9iYWxDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxDb250ZXh0LmdldCgpOyB9Ci0gICAgSlNWYWx1ZSAqY2FsbGJhY2tGdW5jdGlvbigpIGNv
bnN0OwotCi0gICAgdm9pZCByZXBvcnRFcnJvcihOU1N0cmluZyAqKTsKLQotICAgIGlkIGNhbGwo
KTsKLSAgICBpZCBjYWxsKGlkIGFyZ3VtZW50KTsKLSAgICBpZCBjYWxsKGlkIGFyZ3VtZW50T25l
LCBpZCBhcmd1bWVudFR3byk7Ci0gICAgaWQgY2FsbChpZCBhcmd1bWVudE9uZSwgaWQgYXJndW1l
bnRUd28sIGlkIGFyZ3VtZW50VGhyZWUpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiwg
SlNPYmplY3RSZWYgcmVzb2x2ZUZ1bmN0aW9uLCBKU09iamVjdFJlZiByZWplY3RGdW5jdGlvbik7
Ci0gICAgV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiwgSlNPYmplY3RS
ZWYgY2FsbGJhY2tGdW5jdGlvbiwgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UmKTsKLSAgICBX
ZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmLCBXZWJFeHRlbnNpb25BUElS
dW50aW1lQmFzZSYpOwotCi0gICAgSlNPYmplY3RSZWYgbV9jYWxsYmFja0Z1bmN0aW9uOwotICAg
IEpTT2JqZWN0UmVmIG1fcmVqZWN0RnVuY3Rpb247Ci0gICAgSlNSZXRhaW5QdHI8SlNHbG9iYWxD
b250ZXh0UmVmPiBtX2dsb2JhbENvbnRleHQ7Ci0gICAgUmVmUHRyPFdlYkV4dGVuc2lvbkFQSVJ1
bnRpbWVCYXNlPiBtX3J1bnRpbWU7Ci0jZW5kaWYKLX07Ci0KLWVudW0gY2xhc3MgTnVsbFN0cmlu
Z1BvbGljeSB7Ci0gICAgTm9OdWxsU3RyaW5nLAotICAgIE51bGxBc051bGxTdHJpbmcsCi0gICAg
TnVsbEFuZFVuZGVmaW5lZEFzTnVsbFN0cmluZwotfTsKLQotZW51bSBjbGFzcyBOdWxsT3JFbXB0
eVN0cmluZyB7Ci0gICAgTnVsbFN0cmluZ0FzTnVsbCwKLSAgICBOdWxsU3RyaW5nQXNFbXB0eVN0
cmluZwotfTsKLQotaW5saW5lIFdlYkZyYW1lKiB0b1dlYkZyYW1lKEpTQ29udGV4dFJlZiBjb250
ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICByZXR1cm4gV2ViRnJhbWU6OmZyYW1l
Rm9yQ29udGV4dChKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KGNvbnRleHQpKTsKLX0KLQotaW5s
aW5lIFdlYlBhZ2UqIHRvV2ViUGFnZShKU0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAgICBBU1NF
UlQoY29udGV4dCk7Ci0gICAgYXV0byogZnJhbWUgPSB0b1dlYkZyYW1lKGNvbnRleHQpOwotICAg
IHJldHVybiBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwotfQotCi1pbmxpbmUgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlNTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQotewot
ICAgIEFTU0VSVChzdHJpbmcpOwotICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4o
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykpOwotfQotCi1pbmxp
bmUgSlNWYWx1ZVJlZiB0b0pTTnVsbElmTnVsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHZhbHVlID8g
dmFsdWUgOiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlUmVm
IHRvSlMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlKiBpbXBs
KQotewotICAgIHJldHVybiBKU1dlYkV4dGVuc2lvbldyYXBwZXI6OndyYXAoY29udGV4dCwgaW1w
bCk7Ci19Ci0KLWlubGluZSBSZWY8V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyPiB0b0pTUHJv
bWlzZUNhbGxiYWNrSGFuZGxlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVz
b2x2ZUZ1bmN0aW9uLCBKU09iamVjdFJlZiByZWplY3RGdW5jdGlvbikKLXsKLSAgICByZXR1cm4g
V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyOjpjcmVhdGUoY29udGV4dCwgcmVzb2x2ZUZ1bmN0
aW9uLCByZWplY3RGdW5jdGlvbik7Ci19Ci0KLWlubGluZSBSZWY8V2ViRXh0ZW5zaW9uQ2FsbGJh
Y2tIYW5kbGVyPiB0b0pTRXJyb3JDYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmIGNvbnRleHQs
IFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKQotewotICAgIHJldHVybiBXZWJF
eHRlbnNpb25DYWxsYmFja0hhbmRsZXI6OmNyZWF0ZShjb250ZXh0LCBydW50aW1lKTsKLX0KLQot
UmVmUHRyPFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcj4gdG9KU0NhbGxiYWNrSGFuZGxlcihK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgY2FsbGJhY2ssIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVC
YXNlJik7Ci0KLSNpZmRlZiBfX09CSkNfXwotCi1pZCB0b05TT2JqZWN0KEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiwgQ2xhc3MgY29udGFpbmluZ09iamVjdHNPZkNsYXNzID0gTmlsKTsKLU5TU3Ry
aW5nICp0b05TU3RyaW5nKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgTnVsbFN0cmluZ1BvbGlj
eSA9IE51bGxTdHJpbmdQb2xpY3k6Ok51bGxBbmRVbmRlZmluZWRBc051bGxTdHJpbmcpOwotTlNE
aWN0aW9uYXJ5ICp0b05TRGljdGlvbmFyeShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwotCi1p
bmxpbmUgSlNWYWx1ZVJlZiB0b0pTVmFsdWUoSlNDb250ZXh0UmVmIGNvbnRleHQsIGlkIG9iamVj
dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoSlNWYWx1ZSAqdmFsdWUgPSBkeW5hbWljX29iamNf
Y2FzdDxKU1ZhbHVlPihvYmplY3QpKQotICAgICAgICByZXR1cm4gdmFsdWUuSlNWYWx1ZVJlZjsK
LQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGluQ29udGV4dDpb
SlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOkpTQ29udGV4dEdldEdsb2Jh
bENvbnRleHQoY29udGV4dCldXS5KU1ZhbHVlUmVmOwotfQotCi1KU1ZhbHVlUmVmIHRvSlNWYWx1
ZShKU0NvbnRleHRSZWYsIE5TU3RyaW5nICosIE51bGxPckVtcHR5U3RyaW5nID0gTnVsbE9yRW1w
dHlTdHJpbmc6Ok51bGxTdHJpbmdBc0VtcHR5U3RyaW5nKTsKLUpTVmFsdWVSZWYgdG9KU1ZhbHVl
KEpTQ29udGV4dFJlZiwgTlNVUkwgKiwgTnVsbE9yRW1wdHlTdHJpbmcgPSBOdWxsT3JFbXB0eVN0
cmluZzo6TnVsbFN0cmluZ0FzRW1wdHlTdHJpbmcpOwotCi1OU1N0cmluZyAqdG9OU1N0cmluZyhK
U1N0cmluZ1JlZik7Ci0KLWlubGluZSBKU09iamVjdFJlZiB0b0pTRXJyb3IoSlNDb250ZXh0UmVm
IGNvbnRleHQsIE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0g
ICAgSlNWYWx1ZVJlZiBtZXNzYWdlQXJndW1lbnQgPSB0b0pTVmFsdWUoY29udGV4dCwgc3RyaW5n
LCBOdWxsT3JFbXB0eVN0cmluZzo6TnVsbFN0cmluZ0FzRW1wdHlTdHJpbmcpOwotICAgIHJldHVy
biBKU09iamVjdE1ha2VFcnJvcihjb250ZXh0LCAxLCAmbWVzc2FnZUFyZ3VtZW50LCBudWxscHRy
KTsKLX0KLQotaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTU3RyaW5nKE5TU3Ry
aW5nICpzdHJpbmcpCi17Ci0gICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoc3RyaW5nID8gKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXN0cmluZyA6IENGU1RSKCIiKSkpOwotfQotCi1pbmxpbmUgSlNWYWx1ZVJlZiB0b0pTTnVs
bElmTnVsbChKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgb2JqZWN0KQotewotICAgIEFTU0VSVChj
b250ZXh0KTsKLSAgICByZXR1cm4gb2JqZWN0ID8gdG9KU1ZhbHVlKGNvbnRleHQsIG9iamVjdCkg
OiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci19Ci0KLUpTVmFsdWVSZWYgZGVzZXJpYWxpemVK
U09OU3RyaW5nKEpTQ29udGV4dFJlZiwgTlNTdHJpbmcgKmpzb25TdHJpbmcpOwotTlNTdHJpbmcg
KnNlcmlhbGl6ZUpTT2JqZWN0KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKTsKLQotI2VuZGlmIC8vIF9fT0JKQ19fCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jaWZkZWYgX19PQkpDX18KLQotQGludGVyZmFjZSBKU1ZhbHVlIChUaGVuYWJsZUV4dHJh
cykKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc1RoZW5hYmxlKSBC
T09MIF90aGVuYWJsZTsKLS0gKHZvaWQpX2F3YWl0VGhlbmFibGVSZXNvbHV0aW9uV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCByZXN1bHQsIGlkIGVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcjsKLUBlbmQKLQotI2VuZGlmIC8vIF9fT0JKQ19fCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tf
V0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0
ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvU2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yRXh0ZW5zaW9ucy5wbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQwMTA5
MGFlZWE4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVu
c2lvbnMvQmluZGluZ3MvU2NyaXB0cy9Db2RlR2VuZXJhdG9yRXh0ZW5zaW9ucy5wbQorKysgL2Rl
di9udWxsCkBAIC0xLDE1NzEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0j
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1wYWNrYWdlIENvZGVHZW5lcmF0b3JFeHRlbnNpb25zOwotCi11c2Ugc3Ry
aWN0OwotdXNlIHdhcm5pbmdzOwotdXNlIEZpbGU6OlNwZWM7Ci0KLXN1YiBuZXcKLXsKLSAgICBt
eSAoJGNsYXNzLCAkY29kZUdlbmVyYXRvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSwg
JGlkbEZpbGVQYXRoKSA9IEBfOwotCi0gICAgbXkgJHJlZmVyZW5jZSA9IHsKLSAgICAgICAgY29k
ZUdlbmVyYXRvciA9PiAkY29kZUdlbmVyYXRvciwKLSAgICAgICAgaWRsRmlsZVBhdGggPT4gJGlk
bEZpbGVQYXRoLAotICAgIH07Ci0KLSAgICBibGVzcygkcmVmZXJlbmNlLCAkY2xhc3MpOwotICAg
IHJldHVybiAkcmVmZXJlbmNlOwotfQotCi1zdWIgR2VuZXJhdGVJbnRlcmZhY2UKLXsKLX0KLQot
c3ViIFdyaXRlRGF0YQotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSwgJG91dHB1dERpcikg
PSBAXzsKLQotICAgIGZvcmVhY2ggbXkgJGZpbGUgKCRzZWxmLT5fZ2VuZXJhdGVIZWFkZXJGaWxl
KCRpbnRlcmZhY2UpLCAkc2VsZi0+X2dlbmVyYXRlSW1wbGVtZW50YXRpb25GaWxlKCRpbnRlcmZh
Y2UpKSB7Ci0gICAgICAgICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+VXBkYXRlRmlsZShGaWxlOjpT
cGVjLT5jYXRmaWxlKCRvdXRwdXREaXIsICQkZmlsZXtuYW1lfSksIGpvaW4oIiIsIEB7JCRmaWxl
e2NvbnRlbnRzfX0pKTsKLSAgICB9Ci19Ci0KLXN1YiBfY2xhc3NOYW1lCi17Ci0gICAgbXkgKCRp
ZGxUeXBlKSA9IEBfOwotCi0gICAgcmV0dXJuICJKUyIgLiBfaW1wbGVtZW50YXRpb25DbGFzc05h
bWUoJGlkbFR5cGUpOwotfQotCi1zdWIgX2NsYXNzUmVmR2V0dGVyCi17Ci0gICAgbXkgKCRzZWxm
LCAkaWRsVHlwZSwgJHN1ZmZpeCkgPSBAXzsKLQotICAgICRzdWZmaXggPSAiQ2xhc3MiIHVubGVz
cyBkZWZpbmVkICRzdWZmaXg7Ci0KLSAgICBteSAkaW1wbGVtZW50YXRpb25DbGFzc05hbWUgPSBf
aW1wbGVtZW50YXRpb25DbGFzc05hbWUoJGlkbFR5cGUpOwotICAgICRpbXBsZW1lbnRhdGlvbkNs
YXNzTmFtZSA9fiBzL15XZWJFeHRlbnNpb25BUEkvLzsKLQotICAgIHJldHVybiAkJHNlbGZ7Y29k
ZUdlbmVyYXRvcn0tPldLX2xjZmlyc3QoJGltcGxlbWVudGF0aW9uQ2xhc3NOYW1lKSAuICRzdWZm
aXg7Ci19Ci0KLXN1YiBfcGFyc2VMaWNlbnNlQmxvY2sKLXsKLSAgICBteSAoJGZpbGVIYW5kbGUp
ID0gQF87Ci0KLSAgICBteSAoJGNvcHlyaWdodCwgJHJlYWRDb3VudCwgJGJ1ZmZlciwgJGN1cnJl
bnRDaGFyYWN0ZXIsICRwcmV2aW91c0NoYXJhY3Rlcik7Ci0gICAgbXkgJHN0YXJ0U2VudGluZWwg
PSAiLyoiOwotICAgIG15ICRsZW5ndGhPZlN0YXJ0U2VudGluZWwgPSBsZW5ndGgoJHN0YXJ0U2Vu
dGluZWwpOwotICAgICRyZWFkQ291bnQgPSByZWFkKCRmaWxlSGFuZGxlLCAkYnVmZmVyLCAkbGVu
Z3RoT2ZTdGFydFNlbnRpbmVsKTsKLSAgICByZXR1cm4gIiIgaWYgKCRyZWFkQ291bnQgPCAkbGVu
Z3RoT2ZTdGFydFNlbnRpbmVsIHx8ICRidWZmZXIgbmUgJHN0YXJ0U2VudGluZWwpOwotICAgICRj
b3B5cmlnaHQgPSAkYnVmZmVyOwotCi0gICAgd2hpbGUgKCRyZWFkQ291bnQgPSByZWFkKCRmaWxl
SGFuZGxlLCAkY3VycmVudENoYXJhY3RlciwgMSkpIHsKLSAgICAgICAgJGNvcHlyaWdodCAuPSAk
Y3VycmVudENoYXJhY3RlcjsKLSAgICAgICAgcmV0dXJuICRjb3B5cmlnaHQgaWYgJGN1cnJlbnRD
aGFyYWN0ZXIgZXEgIi8iICYmICRwcmV2aW91c0NoYXJhY3RlciBlcSAiKiI7Ci0gICAgICAgICRw
cmV2aW91c0NoYXJhY3RlciA9ICRjdXJyZW50Q2hhcmFjdGVyOwotICAgIH0KLQotICAgIHJldHVy
biAiIjsKLX0KLQotc3ViIF9wYXJzZUxpY2Vuc2VCbG9ja0Zyb21GaWxlCi17Ci0gICAgbXkgKCRw
YXRoKSA9IEBfOwotICAgIG9wZW4gbXkgJGZpbGVIYW5kbGUsICI8IiwgJHBhdGggb3IgZGllICJG
YWlsZWQgdG8gb3BlbiAkcGF0aCBmb3IgcmVhZGluZzogJCEiOwotICAgIG15ICRsaWNlbnNlQmxv
Y2sgPSBfcGFyc2VMaWNlbnNlQmxvY2soJGZpbGVIYW5kbGUpOwotICAgIGNsb3NlKCRmaWxlSGFu
ZGxlKTsKLSAgICByZXR1cm4gJGxpY2Vuc2VCbG9jazsKLX0KLQotc3ViIF9kZWZhdWx0TGljZW5z
ZUJsb2NrCi17Ci0gICAgcmV0dXJuIDw8RU9GOwotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC1A
e1tfeWVhclN0cmluZygpXX0gQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotRU9GCi19Ci0KLXN1YiBfbGljZW5zZUJsb2NrCi17Ci0gICAgbXkgKCRzZWxmKSA9IEBfOwot
ICAgIHJldHVybiAkc2VsZi0+e2xpY2Vuc2VCbG9ja30gaWYgJHNlbGYtPntsaWNlbnNlQmxvY2t9
OwotCi0gICAgbXkgJGxpY2Vuc2VCbG9jayA9IF9wYXJzZUxpY2Vuc2VCbG9ja0Zyb21GaWxlKCRz
ZWxmLT57aWRsRmlsZVBhdGh9KSB8fCBfZGVmYXVsdExpY2Vuc2VCbG9jaygpOwotICAgICRzZWxm
LT57bGljZW5zZUJsb2NrfSA9ICRsaWNlbnNlQmxvY2s7Ci0gICAgcmV0dXJuICRsaWNlbnNlQmxv
Y2s7Ci19Ci0KLXN1YiBjb25kaXRpb25hbFN0cmluZwotewotICAgIG15ICgkbm9kZSkgPSBAXzsK
LSAgICBteSAkY29uZGl0aW9uYWwgPSAkbm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRp
dGlvbmFsIn07Ci0gICAgcmV0dXJuICIiIHVubGVzcyAkY29uZGl0aW9uYWw7Ci0gICAgIyBXZSBy
ZWFsbHkgc2hvdWxkIGJlIGNhbGxpbmcgdGhpcyBhcyAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPkdl
bmVyYXRlLi4uLCBidXQgdGhhdCBtYWtlcyBpdCBoYXJkCi0gICAgIyB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSBFeHRlbnNpb25zR2xvYmFsT2JqZWN0c0NvbGxlY3Rvci5wbC4gU2luY2UKLSAg
ICAjIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUgZG9lc24ndCBh
Y3R1YWxseSB1c2UgdGhlIG9iamVjdCByZWZlcmVuY2UsIHRoaXMKLSAgICAjIHdheSB3b3JrcyBq
dXN0IGZpbmUuCi0gICAgcmV0dXJuIENvZGVHZW5lcmF0b3I6OkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoMCwgJGNvbmRpdGlvbmFsKTsKLX0KLQotc3ViIF9nZW5l
cmF0ZUhlYWRlckZpbGUKLXsKLSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UpID0gQF87Ci0KLSAg
ICBteSBAY29udGVudHMgPSAoKTsKLQotICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X2xpY2Vu
c2VCbG9jaygpKTsKLSAgICBwdXNoKEBjb250ZW50cywgIlxuXG4iKTsKLQotICAgIG15ICRpZGxU
eXBlID0gJGludGVyZmFjZS0+dHlwZTsKLSAgICBteSAkY2xhc3NOYW1lID0gX2NsYXNzTmFtZSgk
aWRsVHlwZSk7Ci0gICAgbXkgJGltcGxlbWVudGF0aW9uQ2xhc3NOYW1lID0gX2ltcGxlbWVudGF0
aW9uQ2xhc3NOYW1lKCRpZGxUeXBlKTsKLSAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gJHNlbGYt
Pl9wYXJlbnRDbGFzc05hbWUoJGludGVyZmFjZSk7Ci0gICAgbXkgJGZpbGVuYW1lID0gJGNsYXNz
TmFtZSAuICIuaCI7Ci0KLSAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0
cmluZygkaW50ZXJmYWNlKTsKLSAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKLSNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfQotCi1FT0YKLQotICAgIHB1c2go
QGNvbnRlbnRzLCA8PEVPRik7Ci0jaW1wb3J0ICIke3BhcmVudENsYXNzTmFtZX0uaCIKLUVPRgot
Ci0gICAgcHVzaChAY29udGVudHMsICIjaW1wb3J0IFwiJHtjbGFzc05hbWV9Q3VzdG9tLmhcIlxu
IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUhlYWRlciJ9Owot
ICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyAke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfTsKLQotY2xhc3MgJHtjbGFzc05hbWV9IDogcHVi
bGljICR7cGFyZW50Q2xhc3NOYW1lfSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIEpTQ2xhc3NSZWYg
QHtbJHNlbGYtPl9jbGFzc1JlZkdldHRlcigkaWRsVHlwZSldfSgpOwotICAgIHN0YXRpYyBKU0Ns
YXNzUmVmIEB7WyRzZWxmLT5fY2xhc3NSZWZHZXR0ZXIoJGlkbFR5cGUsICJHbG9iYWxPYmplY3RD
bGFzcyIpXX0oKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlv
biogc3RhdGljRnVuY3Rpb25zKCk7Ci0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0
YXRpY1ZhbHVlcygpOwotICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNDb25z
dGFudHMoKTsKLSAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU0NvbnRleHRSZWYsIEpTT2Jq
ZWN0UmVmIGNvbnN0cnVjdG9yLCBKU1ZhbHVlUmVmIHBvc3NpYmxlSW5zdGFuY2UsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7Ci1FT0YKLQotICAgIG15ICRoYXNEeW5hbWljUHJvcGVydGllcyA9IDA7
Ci0gICAgbXkgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzID0gMDsKLQotICAgIGlmIChteSBA
ZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICBwdXNoKEBj
b250ZW50cywgIlxuICAgIC8vIEZ1bmN0aW9uc1xuXG4iKTsKLSAgICAgICAgcHVzaChAY29udGVu
dHMsICIgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYsIEpTT2Jq
ZWN0UmVmLCBKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVmKTtcbiIpIGlmICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07Ci0gICAgICAg
IHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBib29sIGhhc1Byb3BlcnR5KEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21IYXNQcm9wZXJ0eSJ9OwotCi0gICAgICAgIGZvcmVhY2ggbXkg
JGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICAkaGFzRHluYW1pY1Byb3BlcnRp
ZXMgPSAxIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMifTsKLSAg
ICAgICAgICAgICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyA9IDEgaWYgJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9OwotCi0gICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24pOwotCi0gICAg
ICAgICAgICBwdXNoKEBjb250ZW50cywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3Rh
dGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVm
Kik7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBib29sIHNl
dFByb3BlcnR5KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmLCBKU1ZhbHVlUmVmKik7XG4iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJTZXRQcm9wZXJ0eSJ9OwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0UHJvcGVydHkoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYqKTtcbiIpIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkdldFByb3BlcnR5In07Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZiopO1xuIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRGVsZXRlUHJvcGVydHkifTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobXkgQGNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29u
c3RhbnRzfSkgewotICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuICAgIC8vIENvbnN0YW50c1xu
XG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEBjb25zdGFudHMpIHsKLSAgICAg
ICAgICAgIG15ICRnZXR0ZXJOYW1lID0gJGNvbnN0YW50LT5uYW1lOwotICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgJHtnZXR0ZXJOYW1lfShKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopO1xuIik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobXkgQGF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0
dHJpYnV0ZXN9KSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gQXR0cmlidXRl
c1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmlidXRlcykgewot
ICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9J
bXBsZW1lbnRhdGlvbiJ9OwotCi0gICAgICAgICAgICAkaGFzRHluYW1pY1Byb3BlcnRpZXMgPSAx
IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEeW5hbWljIn07Ci0gICAgICAg
ICAgICAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJNYWluV29ybGRPbmx5In07Ci0KLSAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwotCi0gICAgICAg
ICAgICBwdXNoKEBjb250ZW50cywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGlj
IEpTVmFsdWVSZWYgQHtbJHNlbGYtPl9nZXR0ZXJOYW1lKCRhdHRyaWJ1dGUpXX0oSlNDb250ZXh0
UmVmLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIGJvb2wgQHtbJHNlbGYtPl9zZXR0ZXJO
YW1lKCRhdHRyaWJ1dGUpXX0oSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYs
IEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqKTtcbiIpIHVubGVzcyAkYXR0cmlidXRlLT5pc1JlYWRP
bmx5OwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICgkaGFzRHluYW1pY1Byb3BlcnRpZXMgb3IgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gRHluYW1pYyBBdHRyaWJ1
dGVzXG5cbiIpOwotICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTUHJvcGVydHlOYW1lQWNj
dW11bGF0b3JSZWYpO1xuIik7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBi
b29sIGhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmKTtc
biIpOwotICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRQ
cm9wZXJ0eShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJl
ZiopO1xuIik7Ci0gICAgfQotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLX07Ci0KLSR7
aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1FT0YK
LQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotI2Vu
ZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9Ci0KLUVPRgotCi0gICAgcHVzaChAY29udGVudHMs
IDw8RU9GKTsKLUVPRgotCi0gICAgcmV0dXJuIHsgbmFtZSA9PiAkZmlsZW5hbWUsIGNvbnRlbnRz
ID0+IFxAY29udGVudHMgfTsKLX0KLQotc3ViIF9nZW5lcmF0ZUltcGxlbWVudGF0aW9uRmlsZQot
ewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKLQotICAgIG15IEBjb250ZW50c1By
ZWZpeCA9ICgpOwotICAgIG15ICVjb250ZW50c0luY2x1ZGVzID0gKCk7Ci0gICAgbXkgQGNvbnRl
bnRzID0gKCk7Ci0KLSAgICBteSAkaWRsVHlwZSA9ICRpbnRlcmZhY2UtPnR5cGU7Ci0gICAgbXkg
JGNsYXNzTmFtZSA9IF9jbGFzc05hbWUoJGlkbFR5cGUpOwotICAgIG15ICRpbXBsZW1lbnRhdGlv
bkNsYXNzTmFtZSA9IF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgkaWRsVHlwZSk7Ci0gICAgbXkg
JGZpbGVuYW1lID0gJGNsYXNzTmFtZSAuICIubW0iOwotCi0gICAgcHVzaChAY29udGVudHNQcmVm
aXgsICRzZWxmLT5fbGljZW5zZUJsb2NrKCkpOwotICAgIHB1c2goQGNvbnRlbnRzUHJlZml4LCAi
XG5cbiIpOwotCi0gICAgcHVzaChAY29udGVudHNQcmVmaXgsIDw8RU9GKTsKLSNpZiAhX19oYXNf
ZmVhdHVyZShvYmpjX2FyYykKLSNlcnJvciBUaGlzIGZpbGUgcmVxdWlyZXMgQVJDLiBBZGQgdGhl
ICItZm9iamMtYXJjIiBjb21waWxlciBmbGFnIGZvciB0aGlzIGZpbGUuCi0jZW5kaWYKLQotRU9G
Ci0KLSAgICBwdXNoKEBjb250ZW50c1ByZWZpeCwgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuXG4i
KTsKLQotICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRpbnRl
cmZhY2UpOwotICAgIHB1c2goQGNvbnRlbnRzUHJlZml4LCA8PEVPRikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwotI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9Ci0KLUVPRgotCi0gICAgbXkgJGNsYXNz
UmVmR2V0dGVyID0gJHNlbGYtPl9jbGFzc1JlZkdldHRlcigkaWRsVHlwZSk7Ci0gICAgbXkgJGds
b2JhbENsYXNzUmVmR2V0dGVyID0gJHNlbGYtPl9jbGFzc1JlZkdldHRlcigkaWRsVHlwZSwgIkds
b2JhbE9iamVjdENsYXNzIik7Ci0gICAgbXkgJHBhcmVudENsYXNzTmFtZSA9ICRzZWxmLT5fcGFy
ZW50Q2xhc3NOYW1lKCRpbnRlcmZhY2UpOwotCi0gICAgJGNvbnRlbnRzSW5jbHVkZXN7IlwiJHtj
bGFzc05hbWV9LmhcIiJ9ID0gMTsKLSAgICAkY29udGVudHNJbmNsdWRlc3siXCIke2ltcGxlbWVu
dGF0aW9uQ2xhc3NOYW1lfS5oXCIifSA9IDE7Ci0KLSAgICBwdXNoKEBjb250ZW50cywgPDxFT0Yp
OwotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotJHtpbXBs
ZW1lbnRhdGlvbkNsYXNzTmFtZX0qIHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgaWYgKCFjb250ZXh0IHx8
ICF2YWx1ZSB8fCAhJHtjbGFzc05hbWV9Ojoke2NsYXNzUmVmR2V0dGVyfSgpIHx8ICFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHZhbHVlLCAke2NsYXNzTmFtZX06OiR7Y2xhc3NSZWZH
ZXR0ZXJ9KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8JHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qPihKU1dlYkV4dGVuc2lvbldyYXBwZXI6OnVu
d3JhcChjb250ZXh0LCB2YWx1ZSkpOwotfQotCi1KU0NsYXNzUmVmICR7Y2xhc3NOYW1lfTo6JHtj
bGFzc1JlZkdldHRlcn0oKQotewotICAgIHN0YXRpYyBKU0NsYXNzUmVmIGpzQ2xhc3M7Ci0gICAg
aWYgKCFqc0NsYXNzKSB7Ci0gICAgICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBr
SlNDbGFzc0RlZmluaXRpb25FbXB0eTsKLSAgICAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAi
QHtbX3B1YmxpY0NsYXNzTmFtZSgkaWRsVHlwZSldfSI7Ci0gICAgICAgIGRlZmluaXRpb24ucGFy
ZW50Q2xhc3MgPSBAe1skc2VsZi0+X3BhcmVudENsYXNzUmVmR2V0dGVyRXhwcmVzc2lvbigkaW50
ZXJmYWNlKV19OwotICAgICAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVlcyA9IHN0YXRpY1ZhbHVl
cygpOwotICAgICAgICBkZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IHN0YXRpY0Z1bmN0aW9u
cygpOwotRU9GCi0KLSAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgZGVmaW5pdGlvbi5pbml0
aWFsaXplID0gaW5pdGlhbGl6ZTtcbiIpIHVubGVzcyBfcGFyZW50SW50ZXJmYWNlKCRpbnRlcmZh
Y2UpOwotICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBkZWZpbml0aW9uLmZpbmFsaXplID0g
ZmluYWxpemU7XG4iKSB1bmxlc3MgX3BhcmVudEludGVyZmFjZSgkaW50ZXJmYWNlKTsKLSAgICBw
dXNoKEBjb250ZW50cywgIiAgICAgICAgZGVmaW5pdGlvbi5nZXRQcm9wZXJ0eU5hbWVzID0gZ2V0
UHJvcGVydHlOYW1lcztcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07Ci0gICAgcHVzaChAY29udGVudHMsICIgICAgICAgIGRl
ZmluaXRpb24uaGFzUHJvcGVydHkgPSBoYXNQcm9wZXJ0eTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21IYXNQcm9wZXJ0eSJ9OwotCi0gICAgbXkgJGhhc0R5
bmFtaWNQcm9wZXJ0aWVzID0gMDsKLSAgICBteSAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMg
PSAwOwotCi0gICAgaWYgKG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9
KSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7Ci0gICAgICAg
ICAgICAkaGFzRHluYW1pY1Byb3BlcnRpZXMgPSAxIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkR5bmFtaWMifTsKLSAgICAgICAgICAgICRoYXNNYWluV29ybGRPbmx5UHJvcGVy
dGllcyA9IDEgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25s
eSJ9OwotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgZGVmaW5pdGlvbi5z
ZXRQcm9wZXJ0eSA9IHNldFByb3BlcnR5O1xuIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU2V0UHJvcGVydHkifTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
ICAgICBkZWZpbml0aW9uLmdldFByb3BlcnR5ID0gZ2V0UHJvcGVydHk7XG4iKSBpZiAkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZXRQcm9wZXJ0eSJ9OwotICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgICAgIGRlZmluaXRpb24uZGVsZXRlUHJvcGVydHkgPSBkZWxldGVQ
cm9wZXJ0eTtcbiIpIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGV0ZVBy
b3BlcnR5In07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobXkgQGF0dHJpYnV0ZXMgPSBA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgICRoYXNEeW5hbWljUHJvcGVydGllcyA9IDEg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMifTsKLSAgICAgICAg
ICAgICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmICgkaGFzRHluYW1pY1Byb3BlcnRpZXMgb3IgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVz
KSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBkZWZpbml0aW9uLmdldFByb3Bl
cnR5TmFtZXMgPSBnZXRQcm9wZXJ0eU5hbWVzO1xuIik7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgICAgICBkZWZpbml0aW9uLmhhc1Byb3BlcnR5ID0gaGFzUHJvcGVydHk7XG4iKTsKLSAg
ICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgIGRlZmluaXRpb24uZ2V0UHJvcGVydHkgPSBn
ZXRQcm9wZXJ0eTtcbiIpOwotICAgIH0KLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0g
ICAgICAgIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4ganNDbGFzczsKLX0KLQotRU9GCi0gICAgcHVzaCAoQGNvbnRlbnRzLCA8PEVPRik7
Ci1KU0NsYXNzUmVmICR7Y2xhc3NOYW1lfTo6JHtnbG9iYWxDbGFzc1JlZkdldHRlcn0oKQotewot
ICAgIHN0YXRpYyBKU0NsYXNzUmVmIGpzQ2xhc3M7Ci0gICAgaWYgKCFqc0NsYXNzKSB7Ci0gICAg
ICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0
eTsKLSAgICAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiQHtbX3B1YmxpY0NsYXNzTmFtZSgk
aWRsVHlwZSldfSI7Ci0gICAgICAgIGRlZmluaXRpb24uc3RhdGljVmFsdWVzID0gc3RhdGljQ29u
c3RhbnRzKCk7Ci0gICAgICAgIGRlZmluaXRpb24uaGFzSW5zdGFuY2UgPSBoYXNJbnN0YW5jZTsK
LSAgICAgICAganNDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmRlZmluaXRpb24pOwotICAgIH0KLQot
ICAgIHJldHVybiBqc0NsYXNzOwotfQotCi1FT0YKLQotICAgIHB1c2goQGNvbnRlbnRzLCAkc2Vs
Zi0+X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVudGF0aW9uKCRpbnRlcmZhY2UpLCAiXG4i
KTsKLSAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9zdGF0aWNWYWx1ZXNHZXR0ZXJJbXBsZW1l
bnRhdGlvbigkaW50ZXJmYWNlKSwgIlxuIik7Ci0gICAgcHVzaChAY29udGVudHMsICRzZWxmLT5f
c3RhdGljQ29uc3RhbnRzR2V0dGVySW1wbGVtZW50YXRpb24oJGludGVyZmFjZSksICJcbiIpOwot
ICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X2hhc0luc3RhbmNlSW1wbGVtZW50YXRpb24oJGlu
dGVyZmFjZSkpOwotICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X2R5bmFtaWNBdHRyaWJ1dGVz
SW1wbGVtZW50YXRpb24oJGludGVyZmFjZSwgJGhhc0R5bmFtaWNQcm9wZXJ0aWVzLCAkaGFzTWFp
bldvcmxkT25seVByb3BlcnRpZXMpKTsKLQotICAgIG15ICRlYXJseVJldHVybkNvbmRpdGlvbiA9
ICIhaW1wbCI7Ci0gICAgJGVhcmx5UmV0dXJuQ29uZGl0aW9uIC49ICIgfHwgIWltcGwtPmlzRm9y
TWFpbldvcmxkKCkiIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYWluV29y
bGRPbmx5In07Ci0KLSAgICBpZiAobXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0
aW9uc30pIHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICJcbi8vIEZ1bmN0aW9uc1xuIik7Ci0K
LSAgICAgICAgaWYgKG15ICRjdXN0b21HZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb24gPSAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyJ9KSB7Ci0g
ICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotCi12b2lkICR7Y2xhc3NOYW1lfTo6
Z2V0UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNQcm9wZXJ0eU5hbWVBY2N1bXVsYXRvclJlZiBwcm9wZXJ0eU5hbWVzKQotewotICAg
ICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xh
c3NOYW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIE5TQXJyYXkgKnByb3BlcnR5TmFtZVN0cmluZ3MgPSBpbXBsLT4ke2N1c3Rv
bUdldFByb3BlcnR5TmFtZXNGdW5jdGlvbn0oKTsKLQotICAgIGZvciAoTlNTdHJpbmcgKnByb3Bl
cnR5TmFtZSBpbiBwcm9wZXJ0eU5hbWVTdHJpbmdzKQotICAgICAgICBKU1Byb3BlcnR5TmFtZUFj
Y3VtdWxhdG9yQWRkTmFtZShwcm9wZXJ0eU5hbWVzLCB0b0pTU3RyaW5nKHByb3BlcnR5TmFtZSku
Z2V0KCkpOwotfQotRU9GCi0gICAgICAgIH0KLQotICAgICAgICBpZiAobXkgJGN1c3RvbUhhc1By
b3BlcnR5RnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SGFzUHJvcGVydHkifSkgewotICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQot
Ym9vbCAke2NsYXNzTmFtZX06Omhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgJHtp
bXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05h
bWV9KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGltcGwtPiR7Y3VzdG9tSGFzUHJvcGVydHlGdW5jdGlvbn0o
dG9OU1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLX0KLUVPRgotICAgICAgICB9Ci0KLSAgICAgICAg
Zm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIG5leHQgaWYg
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn07Ci0KLSAgICAgICAgICAg
IG15ICRmdW5jdGlvbkVhcmx5UmV0dXJuQ29uZGl0aW9uID0gJGVhcmx5UmV0dXJuQ29uZGl0aW9u
OwotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuIik7Ci0KLSAgICAgICAgICAgIG15
ICRmdW5jdGlvblNpZ25hdHVyZSA9ICJKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6QHtbJGZ1bmN0
aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSI7Ci0KLSAgICAgICAgICAgIG15ICRkZWZh
dWx0RWFybHlSZXR1cm5WYWx1ZSA9ICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSI7Ci0g
ICAgICAgICAgICBteSAkZGVmYXVsdFJldHVyblZhbHVlID0gJGRlZmF1bHRFYXJseVJldHVyblZh
bHVlOwotCi0gICAgICAgICAgICBteSAkaXNTZXRQcm9wZXJ0eUZ1bmN0aW9uID0gZGVmaW5lZCAk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTZXRQcm9wZXJ0eSJ9OwotICAgICAgICAg
ICAgbXkgJGlzR2V0UHJvcGVydHlGdW5jdGlvbiA9IGRlZmluZWQgJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiR2V0UHJvcGVydHkifTsKLSAgICAgICAgICAgIG15ICRpc0RlbGV0ZVBy
b3BlcnR5RnVuY3Rpb24gPSBkZWZpbmVkICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRlbGV0ZVByb3BlcnR5In07Ci0gICAgICAgICAgICBteSAkaXNQcm9wZXJ0eUZ1bmN0aW9uID0g
JGlzU2V0UHJvcGVydHlGdW5jdGlvbiB8fCAkaXNHZXRQcm9wZXJ0eUZ1bmN0aW9uIHx8ICRpc0Rl
bGV0ZVByb3BlcnR5RnVuY3Rpb247Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgPDxFT0YpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfQotRU9GCi0KLSAgICAgICAgICAgIGlmICgkaXNTZXRQcm9wZXJ0eUZ1bmN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgJGRlZmF1bHRFYXJseVJldHVyblZhbHVlID0gImZhbHNlIjsKLSAgICAg
ICAgICAgICAgICAkZGVmYXVsdFJldHVyblZhbHVlID0gInRydWUiOwotICAgICAgICAgICAgICAg
IHB1c2goQGNvbnRlbnRzLCAiYm9vbCAke2NsYXNzTmFtZX06OnNldFByb3BlcnR5KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWVSZWYgbmV3VmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikiKTsKLSAg
ICAgICAgICAgIH0gZWxzaWYgKCRpc0dldFByb3BlcnR5RnVuY3Rpb24pIHsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBjb250ZW50cywgIkpTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpnZXRQcm9wZXJ0
eShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIik7Ci0gICAgICAgICAgICB9
IGVsc2lmICgkaXNEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgJGRl
ZmF1bHRFYXJseVJldHVyblZhbHVlID0gImZhbHNlIjsKLSAgICAgICAgICAgICAgICAkZGVmYXVs
dFJldHVyblZhbHVlID0gInRydWUiOwotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
Ym9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICRmdW5jdGlvblNpZ25hdHVyZSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLXsKLSAgICAke2ltcGxlbWVudGF0
aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0oY29udGV4
dCwgdGhpc09iamVjdCk7Ci0gICAgaWYgKCR7ZnVuY3Rpb25FYXJseVJldHVybkNvbmRpdGlvbn0p
Ci0gICAgICAgIHJldHVybiAke2RlZmF1bHRFYXJseVJldHVyblZhbHVlfTsKLUVPRgotCi0gICAg
ICAgICAgICBteSBAcGFyYW1ldGVycyA9ICgpOwotICAgICAgICAgICAgbXkgQHNwZWNpZmllZFBh
cmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfTsKLSAgICAgICAgICAgIG15ICRuZWVk
c0V4Y2VwdGlvblN0cmluZyA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJhaXNl
c0V4Y2VwdGlvbiJ9OwotCi0gICAgICAgICAgICBteSAkbGFzdFBhcmFtZXRlciA9ICRzcGVjaWZp
ZWRQYXJhbWV0ZXJzWyQjc3BlY2lmaWVkUGFyYW1ldGVyc107Ci0KLSAgICAgICAgICAgIHB1c2go
QGNvbnRlbnRzLCAiXG4iKSBpZiBzY2FsYXIgQHNwZWNpZmllZFBhcmFtZXRlcnM7Ci0gICAgICAg
ICAgICBteSAkbmVlZHNTY3JpcHRDb250ZXh0ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTmVlZHNTY3JpcHRDb250ZXh0In07Ci0KLSAgICAgICAgICAgIG15ICRuZWVkc0ZyYW1l
ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVlZHNGcmFtZSJ9OwotICAgICAg
ICAgICAgbXkgJG5lZWRzUGFnZSA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5l
ZWRzUGFnZSJ9OwotICAgICAgICAgICAgbXkgJHJldHVybnNQcm9taXNlSWZOb0NhbGxiYWNrID0g
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJuc1Byb21pc2VXaGVuQ2FsbGJh
Y2tJc09taXR0ZWQifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJu
c1Byb21pc2VXaGVuQ2FsbGJhY2tJc09taXR0ZWQifTsKLSAgICAgICAgICAgIG15ICRjYWxsYmFj
a0hhbmRsZXJBcmd1bWVudDsKLQotICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhc
JWNvbnRlbnRzSW5jbHVkZXMsICRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uKTsKLQotICAgICAg
ICAgICAgbXkgJG9wdGlvbmFsQXJndW1lbnRDb3VudCA9IDA7Ci0KLSAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJHBhcmFtZXRlciAoQHNwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAg
ICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJHBhcmFtZXRlci0+
dHlwZSwgJHBhcmFtZXRlcik7Ci0gICAgICAgICAgICAgICAgJG9wdGlvbmFsQXJndW1lbnRDb3Vu
dCsrIGlmICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAg
ICAgICAgICAgICAgICRuZWVkc1NjcmlwdENvbnRleHQgPSAxIGlmICRwYXJhbWV0ZXItPnR5cGUt
Pm5hbWUgZXEgImZ1bmN0aW9uIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxiYWNrSGFuZGxlciJ9OwotICAgICAgICAgICAgICAgICRuZWVkc1BhZ2UgPSAxIGlmICRw
YXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFja0hhbmRsZXIifSAmJiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVlZHNQYWdlV2l0aENhbGxiYWNrSGFuZGxl
ciJ9OwotICAgICAgICAgICAgICAgICRuZWVkc0ZyYW1lID0gMSBpZiAkcGFyYW1ldGVyLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2tIYW5kbGVyIn0gJiYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5lZWRzRnJhbWVXaXRoQ2FsbGJhY2tIYW5kbGVyIn07Ci0gICAgICAg
ICAgICAgICAgJGNhbGxiYWNrSGFuZGxlckFyZ3VtZW50ID0gJHBhcmFtZXRlci0+bmFtZSBpZiAk
cGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2tIYW5kbGVyIn0gJiYgJHBh
cmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIG15ICRyZXF1aXJlZEFyZ3VtZW50Q291bnQgPSBzY2FsYXIgQHNwZWNp
ZmllZFBhcmFtZXRlcnMgLSAkb3B0aW9uYWxBcmd1bWVudENvdW50OwotCi0gICAgICAgICAgICBp
ZiAoJHJlcXVpcmVkQXJndW1lbnRDb3VudCkgewotICAgICAgICAgICAgICAgIG15ICRjYWxsID0g
X2NhbGxTdHJpbmcoJGlkbFR5cGUsICRmdW5jdGlvbiwgMSk7Ci0gICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsIDw8RU9GKTsKLSAgICBjb25zdCBzaXplX3QgcmVxdWlyZWRBcmd1bWVudENv
dW50ID0gJHtyZXF1aXJlZEFyZ3VtZW50Q291bnR9OwotICAgIGlmIChhcmd1bWVudENvdW50IDwg
cmVxdWlyZWRBcmd1bWVudENvdW50KSB7Ci0gICAgICAgIE5TU3RyaW5nICpyZXF1aXJlZEFyZ3Vt
ZW50c01pc3NpbmdFeGNlcHRpb25TdHJpbmcgPSBAIkludmFsaWQgY2FsbCB0byAke2NhbGx9LiBB
IHJlcXVpcmVkIGFyZ3VtZW50IGlzIG1pc3NpbmcuIjsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRv
SlNFcnJvcihjb250ZXh0LCByZXF1aXJlZEFyZ3VtZW50c01pc3NpbmdFeGNlcHRpb25TdHJpbmcp
OwotICAgICAgICByZXR1cm4gJHtkZWZhdWx0RWFybHlSZXR1cm5WYWx1ZX07Ci0gICAgfQotCi1F
T0YKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCRvcHRpb25hbEFyZ3VtZW50Q291
bnQpIHsKLSAgICAgICAgICAgICAgICBkaWUgIlByb3BlcnR5IGZ1bmN0aW9ucyBjYW4ndCB0YWtl
IG9wdGlvbmFsIGFyZ3VtZW50cyIgaWYgJGlzUHJvcGVydHlGdW5jdGlvbjsKLQotICAgICAgICAg
ICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHNwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxhdGZv
cm1UeXBlVmFyaWFibGVEZWNsYXJhdGlvbigkcGFyYW1ldGVyLCAkcGFyYW1ldGVyLT5uYW1lKSAu
ICJcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAkcGFyYW1ldGVy
LT5uYW1lIC4gIi5yZWxlYXNlTm9uTnVsbCgpIikgaWYgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxiYWNrSGFuZGxlciJ9ICYmICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJPcHRpb25hbCJ9OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJz
LCAkcGFyYW1ldGVyLT5uYW1lKSB1bmxlc3MgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxiYWNrSGFuZGxlciJ9ICYmICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJPcHRpb25hbCJ9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1c2go
QGNvbnRlbnRzLCAiXG4iKTsKLQotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
IGlmIChhcmd1bWVudENvdW50ID09ICIgLiBzY2FsYXIgQHNwZWNpZmllZFBhcmFtZXRlcnMgLiAi
KSB7XG4iKTsKLQotICAgICAgICAgICAgICAgIG15ICRoYXNPcHRpb25hbENhbGxiYWNrSGFuZGxl
ckFzTGFzdEFyZ3VtZW50ID0gMSBpZiAkbGFzdFBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxiYWNrSGFuZGxlciJ9ICYmICRsYXN0UGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiT3B0aW9uYWwifTsKLQotICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKDAuLiQj
c3BlY2lmaWVkUGFyYW1ldGVycykgewotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1ldGVy
ID0gJHNwZWNpZmllZFBhcmFtZXRlcnNbJGldOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgIiAgICAgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNsYXJh
dGlvbigkcGFyYW1ldGVyLCAkcGFyYW1ldGVyLT5uYW1lLCAiYXJndW1lbnRzWyR7aX1dIiwgdW5k
ZWYsIDEpIC4gIlxuIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgfSBlbHNlIHtcbiIpOwotCi0gICAgICAgICAgICAgICAgbXkgJHBy
b2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCJ9OwotCi0gICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgICAgIHNzaXplX3QgYXJndW1lbnRJbmRleCA9IGFyZ3VtZW50Q291
bnQgLSAxO1xuIikgdW5sZXNzICRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQ7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4ID0g
MDtcbiIpIGlmICRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQ7Ci0gICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgICAgIEpTVmFsdWVSZWYgY3VycmVudEFyZ3VtZW50ID0gbnVs
bHB0cjtcblxuIik7Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAg
c2l6ZV90IGFsbG93ZWRPcHRpb25hbEFyZ3VtZW50Q291bnQgPSBhcmd1bWVudENvdW50IC0gcmVx
dWlyZWRBcmd1bWVudENvdW50O1xuIikgaWYgJHJlcXVpcmVkQXJndW1lbnRDb3VudDsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgc2l6ZV90IHByb2Nlc3NlZE9wdGlv
bmFsQXJndW1lbnRDb3VudCA9IDA7XG5cbiIpIGlmICRyZXF1aXJlZEFyZ3VtZW50Q291bnQ7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoJGhhc09wdGlvbmFsQ2FsbGJhY2tIYW5kbGVyQXNMYXN0QXJn
dW1lbnQgJiYgJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCkgewotICAgICAgICAgICAgICAg
ICAgICBteSAkcGFyYW1ldGVyID0gJHNwZWNpZmllZFBhcmFtZXRlcnNbJCNzcGVjaWZpZWRQYXJh
bWV0ZXJzXTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJG9wdGlvbmFsQ29uZGl0aW9uID0gJHJl
cXVpcmVkQXJndW1lbnRDb3VudCA/ICJhbGxvd2VkT3B0aW9uYWxBcmd1bWVudENvdW50ICYmICIg
OiAiIjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgIGlmICgk
b3B0aW9uYWxDb25kaXRpb24oY3VycmVudEFyZ3VtZW50ID0gYXJndW1lbnRzW2FyZ3VtZW50Q291
bnQgLSAxXSkgJiYgKCIgLiAkc2VsZi0+X2phdmFTY3JpcHRUeXBlQ29uZGl0aW9uKCRwYXJhbWV0
ZXIsICJjdXJyZW50QXJndW1lbnQiKSAuICIpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgICAgICAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJp
YWJsZURlY2xhcmF0aW9uKCRwYXJhbWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUsICJjdXJyZW50QXJn
dW1lbnQiLCB1bmRlZiwgMSkgLiAiXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29u
dGVudHMsICIgICAgICAgICAgICAtLWFsbG93ZWRPcHRpb25hbEFyZ3VtZW50Q291bnQ7XG4iKSBp
ZiAkcmVxdWlyZWRBcmd1bWVudENvdW50OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgIiAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50KVxuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICAgICAgICAgIC0tYXJndW1lbnRDb3VudDtc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgfVxuXG4i
KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRJbmRl
eENvbmRpdG9uID0gJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCA/ICJhcmd1bWVudEluZGV4
IDwgYXJndW1lbnRDb3VudCIgOiAiYXJndW1lbnRJbmRleCA+PSAwIjsKLSAgICAgICAgICAgICAg
ICBteSAkbmV4dEFyZ3VtZW50SW5kZXggPSAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0ID8g
IisrYXJndW1lbnRJbmRleCIgOiAiLS1hcmd1bWVudEluZGV4IjsKLQotICAgICAgICAgICAgICAg
IGZvciAobXkgJGogPSAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0ID8gMCA6ICQjc3BlY2lm
aWVkUGFyYW1ldGVyczsgJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCA/ICRqIDw9ICQjc3Bl
Y2lmaWVkUGFyYW1ldGVycyA6ICRqID49IDA7ICRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQg
PyAkaisrIDogJGotLSkgewotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1ldGVyID0gJHNw
ZWNpZmllZFBhcmFtZXRlcnNbJGpdOwotICAgICAgICAgICAgICAgICAgICBteSAkbGFzdEFyZ3Vt
ZW50ID0gJGogZXEgKCRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQgPyAkI3NwZWNpZmllZFBh
cmFtZXRlcnMgOiAwKTsKLQotICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0QXJndW1l
bnQgJiYgJGhhc09wdGlvbmFsQ2FsbGJhY2tIYW5kbGVyQXNMYXN0QXJndW1lbnQgJiYgJHByb2Nl
c3NBcmd1bWVudHNMZWZ0VG9SaWdodDsKLQotICAgICAgICAgICAgICAgICAgICBteSAkb3B0aW9u
YWxDb25kaXRpb24gPSAkcmVxdWlyZWRBcmd1bWVudENvdW50ICYmICRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9ID8gIiAmJiBwcm9jZXNzZWRPcHRpb25hbEFyZ3Vt
ZW50Q291bnQgPCBhbGxvd2VkT3B0aW9uYWxBcmd1bWVudENvdW50IiA6ICIiOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgaWYgKCRhcmd1bWVudEluZGV4Q29u
ZGl0b24kb3B0aW9uYWxDb25kaXRpb24gJiYgKGN1cnJlbnRBcmd1bWVudCA9IGFyZ3VtZW50c1th
cmd1bWVudEluZGV4XSkpIHtcbiIpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICgkcGFyYW1l
dGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgICAgICBpZiAoIiAuICRzZWxmLT5famF2
YVNjcmlwdFR5cGVDb25kaXRpb24oJHBhcmFtZXRlciwgImN1cnJlbnRBcmd1bWVudCIpIC4gIikg
e1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAg
ICAgICAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uKCRwYXJh
bWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUsICJjdXJyZW50QXJndW1lbnQiLCB1bmRlZiwgMSkgLiAi
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICAg
ICAgICAgICsrcHJvY2Vzc2VkT3B0aW9uYWxBcmd1bWVudENvdW50O1xuIikgaWYgJHJlcXVpcmVk
QXJndW1lbnRDb3VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
ICAgICAgICAgICAgICAgICRuZXh0QXJndW1lbnRJbmRleDtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgICAgICB9XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgICAgICAgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNsYXJhdGlv
bigkcGFyYW1ldGVyLCAkcGFyYW1ldGVyLT5uYW1lLCAiY3VycmVudEFyZ3VtZW50IiwgdW5kZWYs
IDEpIC4gIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAg
ICAgICAgICAgICRuZXh0QXJndW1lbnRJbmRleDtcbiIpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgIH1cbiIpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4iKSB1bmxlc3MgJGxhc3RB
cmd1bWVudCB8fCAoJGogZXEgJCNzcGVjaWZpZWRQYXJhbWV0ZXJzIC0gMSAmJiAkaGFzT3B0aW9u
YWxDYWxsYmFja0hhbmRsZXJBc0xhc3RBcmd1bWVudCAmJiAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRU
b1JpZ2h0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgIiAgICB9XG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
Zm9yZWFjaCBteSAkaSAoMC4uJCNzcGVjaWZpZWRQYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG15ICRwYXJhbWV0ZXIgPSAkc3BlY2lmaWVkUGFyYW1ldGVyc1skaV07Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCRpc1Byb3BlcnR5RnVuY3Rpb24gJiYgJGkgPT0gMCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgTlNTdHJpbmcgKiIgLiAk
cGFyYW1ldGVyLT5uYW1lIC4gIiA9IHRvTlNTdHJpbmcocHJvcGVydHlOYW1lKTtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGFy
Z3VtZW50ID0gJGlzU2V0UHJvcGVydHlGdW5jdGlvbiA/ICJuZXdWYWx1ZSIgOiAiYXJndW1lbnRz
WyRpXSI7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZSAiR2V0UHJvcGVydHkgYW5kIERl
bGV0ZVByb3BlcnR5IGZ1bmN0aW9ucyBvbmx5IHRha2Ugb25lIGFyZ3VtZW50IiBpZiAkaXNHZXRQ
cm9wZXJ0eUZ1bmN0aW9uIHx8ICRpc0RlbGV0ZVByb3BlcnR5RnVuY3Rpb247Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2VsZi0+X3BsYXRmb3Jt
VHlwZVZhcmlhYmxlRGVjbGFyYXRpb24oJHBhcmFtZXRlciwgJHBhcmFtZXRlci0+bmFtZSwgJGFy
Z3VtZW50KSAuICJcbiIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAcGFyYW1ldGVycywgJHBhcmFtZXRlci0+bmFtZSAuICIucmVsZWFzZU5vbk51
bGwoKSIpIGlmICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFja0hhbmRs
ZXIifSAmJiAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVycywgJHBhcmFtZXRlci0+bmFtZSkgdW5s
ZXNzICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFja0hhbmRsZXIifSAm
JiAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG15ICRtYXBGdW5jdGlvbiA9
IHN1YiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRBcyJ9IGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRB
cyJ9OwotICAgICAgICAgICAgICAgIHJldHVybiAkXy0+bmFtZTsKLSAgICAgICAgICAgIH07Ci0K
LSAgICAgICAgICAgIG15IEBtZXRob2RTaWduYXR1cmVOYW1lcyA9IG1hcCgmJG1hcEZ1bmN0aW9u
LCBAc3BlY2lmaWVkUGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFt
ZXRlciAoQHNwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAgICAkc2VsZi0+X2lu
c3RhbGxBdXRvbWF0aWNFeGNlcHRpb25zKFxAY29udGVudHMsICRwYXJhbWV0ZXIsICRpZGxUeXBl
LCAkcGFyYW1ldGVyLT5uYW1lLCAkcGFyYW1ldGVyLT5uYW1lLCAkZGVmYXVsdFJldHVyblZhbHVl
LCBcJWNvbnRlbnRzSW5jbHVkZXMsICRmdW5jdGlvbiwgMSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHVuc2hpZnQoQG1ldGhvZFNpZ25hdHVyZU5hbWVzLCAiY29udGV4dCIpIGlmICRu
ZWVkc1NjcmlwdENvbnRleHQ7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBwYXJhbWV0ZXJzLCAiY29u
dGV4dCIpIGlmICRuZWVkc1NjcmlwdENvbnRleHQ7Ci0KLSAgICAgICAgICAgIHVuc2hpZnQoQG1l
dGhvZFNpZ25hdHVyZU5hbWVzLCAicGFnZSIpIGlmICRuZWVkc1BhZ2U7Ci0gICAgICAgICAgICB1
bnNoaWZ0KEBwYXJhbWV0ZXJzLCAidG9XZWJQYWdlKGNvbnRleHQpIikgaWYgJG5lZWRzUGFnZTsK
LQotICAgICAgICAgICAgdW5zaGlmdChAbWV0aG9kU2lnbmF0dXJlTmFtZXMsICJmcmFtZSIpIGlm
ICRuZWVkc0ZyYW1lOwotICAgICAgICAgICAgdW5zaGlmdChAcGFyYW1ldGVycywgInRvV2ViRnJh
bWUoY29udGV4dCkiKSBpZiAkbmVlZHNGcmFtZTsKLQotICAgICAgICAgICAgcHVzaChAbWV0aG9k
U2lnbmF0dXJlTmFtZXMsICJvdXRFeGNlcHRpb25TdHJpbmciKSBpZiAkbmVlZHNFeGNlcHRpb25T
dHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAiJmV4Y2VwdGlvblN0cmluZyIp
IGlmICRuZWVkc0V4Y2VwdGlvblN0cmluZzsKLQotICAgICAgICAgICAgbXkgJGlzVm9pZFJldHVy
biA9ICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCI7Ci0gICAgICAgICAgICBteSAkZnVu
Y3Rpb25DYWxsID0gJHNlbGYtPl9mdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCBcQG1ldGhvZFNpZ25h
dHVyZU5hbWVzLCBcQHBhcmFtZXRlcnMsICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgbXkgJHJl
dHVybkV4cHJlc3Npb24gPSAkc2VsZi0+X3JldHVybkV4cHJlc3Npb24oJGZ1bmN0aW9uLCAkZnVu
Y3Rpb25DYWxsLCAkaW50ZXJmYWNlKTsKLQotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICJc
biIpOwotCi0gICAgICAgICAgICBpZiAoJGNhbGxiYWNrSGFuZGxlckFyZ3VtZW50ICYmICRyZXR1
cm5zUHJvbWlzZUlmTm9DYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGRpZSAiUmV0dXJuaW5n
IGEgUHJvbWlzZSBpcyBvbmx5IGFsbG93ZWQgZm9yIHZvaWQgZnVuY3Rpb25zIiB1bmxlc3MgJGlz
Vm9pZFJldHVybjsKLQotICAgICAgICAgICAgICAgICRkZWZhdWx0UmV0dXJuVmFsdWUgPSAicHJv
bWlzZVJlc3VsdCA/OiAkZGVmYXVsdFJldHVyblZhbHVlIjsKLQotICAgICAgICAgICAgICAgIHB1
c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0gICAgSlNPYmplY3RSZWYgcHJvbWlzZVJlc3VsdCA9IG51
bGxwdHI7Ci0gICAgaWYgKCEke2NhbGxiYWNrSGFuZGxlckFyZ3VtZW50fSkgewotICAgICAgICBK
U09iamVjdFJlZiByZXNvbHZlRnVuY3Rpb24sIHJlamVjdEZ1bmN0aW9uID0gbnVsbHB0cjsKLSAg
ICAgICAgcHJvbWlzZVJlc3VsdCA9IEpTT2JqZWN0TWFrZURlZmVycmVkUHJvbWlzZShjb250ZXh0
LCAmcmVzb2x2ZUZ1bmN0aW9uLCAmcmVqZWN0RnVuY3Rpb24sIG51bGxwdHIpOwotICAgICAgICAk
e2NhbGxiYWNrSGFuZGxlckFyZ3VtZW50fSA9IHRvSlNQcm9taXNlQ2FsbGJhY2tIYW5kbGVyKGNv
bnRleHQsIHJlc29sdmVGdW5jdGlvbiwgcmVqZWN0RnVuY3Rpb24pOwotICAgIH0KLQotRU9GCi0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgkY2FsbGJhY2tIYW5kbGVyQXJndW1lbnQp
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotICAgIGlmICghJHtj
YWxsYmFja0hhbmRsZXJBcmd1bWVudH0pCi0gICAgICAgICR7Y2FsbGJhY2tIYW5kbGVyQXJndW1l
bnR9ID0gdG9KU0Vycm9yQ2FsbGJhY2tIYW5kbGVyKGNvbnRleHQsIGltcGwtPnJ1bnRpbWUoKSk7
Ci0KLUVPRgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJG5lZWRzRXhjZXB0aW9u
U3RyaW5nICYmICEkaXNWb2lkUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY29udGVu
dHMsIDw8RU9GKTsKLSAgICBOU1N0cmluZyAqZXhjZXB0aW9uU3RyaW5nID0gbmlsOwotICAgIEpT
VmFsdWVSZWYgcmVzdWx0ID0gJHtyZXR1cm5FeHByZXNzaW9ufTsKLQotICAgIGlmIChleGNlcHRp
b25TdHJpbmcpIHsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBleGNl
cHRpb25TdHJpbmcpOwotICAgICAgICByZXR1cm4gJHtkZWZhdWx0UmV0dXJuVmFsdWV9OwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1FT0YKLSAgICAgICAgICAgIH0gZWxzaWYgKCRu
ZWVkc0V4Y2VwdGlvblN0cmluZyAmJiAkaXNWb2lkUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsIDw8RU9GKTsKLSAgICBOU1N0cmluZyAqZXhjZXB0aW9uU3RyaW5nID0g
bmlsOwotICAgICR7ZnVuY3Rpb25DYWxsfTsKLQotICAgIGlmIChleGNlcHRpb25TdHJpbmcpCi0g
ICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgZXhjZXB0aW9uU3RyaW5nKTsK
LQotICAgIHJldHVybiAke2RlZmF1bHRSZXR1cm5WYWx1ZX07Ci19Ci1FT0YKLSAgICAgICAgICAg
IH0gZWxzaWYgKCRpc1ZvaWRSZXR1cm4pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgIiAgICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGNv
bnRlbnRzLCAiICAgIHJldHVybiAke2RlZmF1bHRSZXR1cm5WYWx1ZX07XG59XG4iKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0
dXJuICIgLiAkcmV0dXJuRXhwcmVzc2lvbiAuICI7XG59XG4iKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCRpc1Byb3BlcnR5RnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgPDxFT0YpOwotCi0ke2Z1bmN0aW9uU2lnbmF0dXJlfQotewotICAgICR7
aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NO
YW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKLSAgICBpZiAoJHtmdW5jdGlvbkVhcmx5UmV0dXJu
Q29uZGl0aW9ufSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwotCi1FT0YKLQotICAgICAgICAgICAgICAgIG15ICRrZXlBcmd1bWVudE5hbWUgPSAkc3BlY2lm
aWVkUGFyYW1ldGVyc1swXS0+bmFtZTsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywg
IiAgICBhdXRvICR7a2V5QXJndW1lbnROYW1lfSA9IHRvSlNTdHJpbmcoYXJndW1lbnRDb3VudCA+
IDAgPyAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3Rvcigkc3BlY2lmaWVkUGFyYW1l
dGVyc1swXSwgImFyZ3VtZW50c1swXSIpIC4gIiA6IG5pbCk7XG4iKTsKLQotICAgICAgICAgICAg
ICAgIGlmICgkaXNHZXRQcm9wZXJ0eUZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGNvbnRlbnRzLCAiXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgcmV0dXJuIGdldFByb3BlcnR5KGNvbnRleHQsIHRoaXNPYmplY3QsICR7a2V5QXJndW1l
bnROYW1lfS5nZXQoKSwgZXhjZXB0aW9uKTtcbiIpOwotICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCRpc1NldFByb3BlcnR5RnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVl
QXJndW1lbnROYW1lID0gJHNwZWNpZmllZFBhcmFtZXRlcnNbMV0tPm5hbWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIEpTVmFsdWVSZWYgJHt2YWx1ZUFyZ3VtZW50
TmFtZX0gPSBhcmd1bWVudENvdW50ID4gMSA/IGFyZ3VtZW50c1sxXSA6IEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpO1xuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVu
dHMsICIgICAgc2V0UHJvcGVydHkoY29udGV4dCwgdGhpc09iamVjdCwgJHtrZXlBcmd1bWVudE5h
bWV9LmdldCgpLCAke3ZhbHVlQXJndW1lbnROYW1lfSwgZXhjZXB0aW9uKTtcblxuIik7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJGlzRGVsZXRlUHJvcGVydHlGdW5jdGlvbikgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGNvbnRlbnRzLCAiICAgIGRlbGV0ZVByb3BlcnR5KGNvbnRleHQsIHRoaXNPYmplY3Qs
ICR7a2V5QXJndW1lbnROYW1lfS5nZXQoKSwgZXhjZXB0aW9uKTtcblxuIik7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGllICJVbmtub3duIHByb3BlcnR5
IGZ1bmN0aW9uIjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgIiAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7XG4iKSBp
ZiAkaXNTZXRQcm9wZXJ0eUZ1bmN0aW9uIHx8ICRpc0RlbGV0ZVByb3BlcnR5RnVuY3Rpb247Ci0K
LSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIn1cbiIpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfQotRU9GCi0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAobXkgQGNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgewot
ICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuLy8gQ29uc3RhbnRzXG4iKTsKLSAgICAgICAgZm9y
ZWFjaCBteSAkY29uc3RhbnQgKEBjb25zdGFudHMpIHsKLSAgICAgICAgICAgIG15ICRnZXR0ZXJO
YW1lID0gJGNvbnN0YW50LT5uYW1lOwotICAgICAgICAgICAgbXkgJGNvbnN0YW50VmFsdWUgPSAk
Y29uc3RhbnQtPnZhbHVlOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQot
SlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OiR7Z2V0dGVyTmFtZX0oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKLXsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgJGNvbnN0YW50VmFs
dWUpOwotfQotRU9GCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobXkgQGF0dHJpYnV0ZXMg
PSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
XG4vLyBBdHRyaWJ1dGVzXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0
cmlidXRlcykgewotICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTm9JbXBsZW1lbnRhdGlvbiJ9IG9yICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b20ifTsKLQotICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhc
JWNvbnRlbnRzSW5jbHVkZXMsICRhdHRyaWJ1dGUtPnR5cGUsICRhdHRyaWJ1dGUpOwotCi0gICAg
ICAgICAgICBteSAkZ2V0dGVyTmFtZSA9ICRzZWxmLT5fZ2V0dGVyTmFtZSgkYXR0cmlidXRlKTsK
LQotICAgICAgICAgICAgbXkgQG1ldGhvZFNpZ25hdHVyZU5hbWVzID0gKCk7Ci0gICAgICAgICAg
ICBteSBAcGFyYW1ldGVycyA9ICgpOwotCi0gICAgICAgICAgICBwdXNoKEBtZXRob2RTaWduYXR1
cmVOYW1lcywgImNvbnRleHQiKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmVlZHNTY3JpcHRDb250ZXh0In07Ci0gICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAiY29u
dGV4dCIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1NjcmlwdENv
bnRleHQifTsKLQotICAgICAgICAgICAgcHVzaChAbWV0aG9kU2lnbmF0dXJlTmFtZXMsICJwYWdl
IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzUGFnZSJ9OwotICAg
ICAgICAgICAgcHVzaChAcGFyYW1ldGVycywgInRvV2ViUGFnZShjb250ZXh0KSIpIGlmICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1BhZ2UifTsKLQotICAgICAgICAgICAg
cHVzaChAbWV0aG9kU2lnbmF0dXJlTmFtZXMsICJmcmFtZSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJOZWVkc0ZyYW1lIn07Ci0gICAgICAgICAgICBwdXNoKEBwYXJhbWV0
ZXJzLCAidG9XZWJGcmFtZShjb250ZXh0KSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOZWVkc0ZyYW1lIn07Ci0KLSAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9u
ID0gJHNlbGYtPl9mdW5jdGlvbkNhbGwoJGF0dHJpYnV0ZSwgXEBtZXRob2RTaWduYXR1cmVOYW1l
cywgXEBwYXJhbWV0ZXJzLCAkaW50ZXJmYWNlLCAkZ2V0dGVyTmFtZSk7Ci0KLSAgICAgICAgICAg
IG15ICRnZXR0ZXJFYXJseVJldHVybkNvbmRpdGlvbiA9ICRlYXJseVJldHVybkNvbmRpdGlvbjsK
LQotICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotRU9GCi0KLSAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUp
OwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0jaWYgJHtjb25kaXRpb25hbFN0cmluZ30KLUVPRgotCi0gICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgPDxFT0YpOwotSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OiR7Z2V0dGVyTmFtZX0o
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci1FT0YKLQotICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7XG5cbiIpOwot
Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotICAgICR7aW1wbGVtZW50YXRp
b25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0
LCBvYmplY3QpOwotICAgIGlmICgke2dldHRlckVhcmx5UmV0dXJuQ29uZGl0aW9ufSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotRU9GCi0KLSAgICAgICAg
ICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLSAgICByZXR1cm4gQHtbJHNlbGYtPl9yZXR1
cm5FeHByZXNzaW9uKCRhdHRyaWJ1dGUsICRnZXR0ZXJFeHByZXNzaW9uLCAkaW50ZXJmYWNlKV19
OwotfQotRU9GCi0KLSAgICAgICAgICAgIHVubGVzcyAoJGF0dHJpYnV0ZS0+aXNSZWFkT25seSkg
ewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJFYXJseVJldHVybkNvbmRpdGlvbiA9ICRlYXJs
eVJldHVybkNvbmRpdGlvbjsKLQotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVP
Rik7Ci0KLWJvb2wgJHtjbGFzc05hbWV9OjpAe1skc2VsZi0+X3NldHRlck5hbWUoJGF0dHJpYnV0
ZSldfShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLUVPRgotCi0gICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgVU5VU0VEX1BB
UkFNKHByb3BlcnR5TmFtZSk7XG5cbiIpOwotCi0gICAgICAgICAgICAgICAgcHVzaChAY29udGVu
dHMsIDw8RU9GKTsKLSAgICAke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtp
bXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0oY29udGV4dCwgb2JqZWN0KTsKLSAgICBpZiAoJHtzZXR0
ZXJFYXJseVJldHVybkNvbmRpdGlvbn0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotRU9GCi0K
LSAgICAgICAgICAgICAgICBteSAkcGxhdGZvcm1WYWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAo
JHNlbGYtPl9oYXNBdXRvbWF0aWNFeGNlcHRpb25zKCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICRwbGF0Zm9ybVZhbHVlID0gInBsYXRmb3JtVmFsdWUiOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJp
YWJsZURlY2xhcmF0aW9uKCRhdHRyaWJ1dGUsICJwbGF0Zm9ybVZhbHVlIiwgInZhbHVlIikgLiAi
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPl9pbnN0YWxsQXV0b21hdGljRXhjZXB0
aW9ucyhcQGNvbnRlbnRzLCAkYXR0cmlidXRlLCAkaWRsVHlwZSwgInBsYXRmb3JtVmFsdWUiLCAk
YXR0cmlidXRlLT5uYW1lLCAiZmFsc2UiLCBcJWNvbnRlbnRzSW5jbHVkZXMsICRhdHRyaWJ1dGUp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRwbGF0Zm9y
bVZhbHVlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcigkYXR0cmlidXRlLCAidmFs
dWUiKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgPDxFT0YpOwotICAgIGltcGwtPkB7WyRzZWxmLT5fc2V0dGVyTmFtZSgkYXR0cmlidXRlKV19
KCR7cGxhdGZvcm1WYWx1ZX0pOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci1FT0YKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7Ci0jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ30KLUVPRgotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci1FT0YKLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwotCi0jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ30KLUVPRgotCi0gICAgdW5z
aGlmdChAY29udGVudHMsIG1hcCB7ICIjaW1wb3J0ICRfXG4iIH0gc29ydCBrZXlzKCVjb250ZW50
c0luY2x1ZGVzKSk7Ci0gICAgdW5zaGlmdChAY29udGVudHMsIEBjb250ZW50c1ByZWZpeCk7Ci0K
LSAgICByZXR1cm4geyBuYW1lID0+ICRmaWxlbmFtZSwgY29udGVudHMgPT4gXEBjb250ZW50cyB9
OwotfQotCi1zdWIgX2dldHRlck5hbWUKLXsKLSAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUpID0g
QF87Ci0KLSAgICBteSAkc2lnbmF0dXJlID0gJGF0dHJpYnV0ZTsKLSAgICBteSAkbmFtZSA9ICRz
aWduYXR1cmUtPm5hbWU7Ci0KLSAgICBteSAlc3BlY2lhbENhc2VzID0gKAotICAgICAgICBidWJi
bGVzID0+ICJidWJibGVzIiwKLSAgICApOwotCi0gICAgcmV0dXJuICRzcGVjaWFsQ2FzZXN7JG5h
bWV9IGlmIGRlZmluZWQgJHNwZWNpYWxDYXNlc3skbmFtZX07Ci0gICAgcmV0dXJuICJpcyIgLiAk
JHNlbGZ7Y29kZUdlbmVyYXRvcn0tPldLX3VjZmlyc3QoJG5hbWUpIGlmICRzaWduYXR1cmUtPnR5
cGUtPm5hbWUgZXEgImJvb2xlYW4iOwotICAgIHJldHVybiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEFzIn07Ci0gICAgcmV0dXJuICRuYW1lOwotfQotCi1zdWIgX2hh
c0F1dG9tYXRpY0V4Y2VwdGlvbnMKLXsKLSAgICBteSAoJHNlbGYsICRzaWduYXR1cmUpID0gQF87
Ci0KLSAgICByZXR1cm4gJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbm5vdEJl
RW1wdHkifSB8fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlv
biJ9IGVxICJKU09OIiB8fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNBcnJh
eSJ9Ci0gICAgICAgIHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0RpY3Rp
b25hcnkifSB8fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifSB8
fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0KLSAgICAgICAgfHwgJHNp
Z25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiZnVuY3Rpb24iIHx8ICQkc2VsZntjb2RlR2VuZXJhdG9y
fS0+SXNQcmltaXRpdmVUeXBlKCRzaWduYXR1cmUtPnR5cGUpIHx8ICQkc2VsZntjb2RlR2VuZXJh
dG9yfS0+SXNTdHJpbmdUeXBlKCRzaWduYXR1cmUtPnR5cGUpOwotfQotCi1zdWIgX2luY2x1ZGVI
ZWFkZXJzCi17Ci0gICAgbXkgKCRzZWxmLCAkaGVhZGVycywgJGlkbFR5cGUsICRzaWduYXR1cmUp
ID0gQF87Ci0KLSAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJGlkbFR5cGU7Ci0KLSAgICBteSAk
aWRsVHlwZU5hbWUgPSAkaWRsVHlwZS0+bmFtZTsKLSAgICByZXR1cm4gaWYgJGlkbFR5cGVOYW1l
IGVxICJET01TdHJpbmciIG9yICRpZGxUeXBlTmFtZSBlcSAiRE9NV2luZG93IiBvciAkaWRsVHlw
ZU5hbWUgZXEgImFueSIgb3IgJGlkbFR5cGVOYW1lIGVxICJ2b2lkIiBvciAkaWRsVHlwZU5hbWUg
ZXEgImJvb2xlYW4iIG9yICRpZGxUeXBlTmFtZSBlcSAiZnVuY3Rpb24iIG9yICRpZGxUeXBlTmFt
ZSBlcSAiYXJyYXkiIG9yICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNQcmltaXRpdmVUeXBlKCRp
ZGxUeXBlKTsKLQotICAgICQkaGVhZGVyc3snIicgLiBfY2xhc3NOYW1lKCRpZGxUeXBlKSAuICcu
aCInfSA9IDE7Ci0gICAgJCRoZWFkZXJzeyciJyAuIF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgk
aWRsVHlwZSkgLiAnLmgiJ30gPSAxOwotfQotCi1zdWIgX2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1l
Ci17Ci0gICAgbXkgKCRpZGxUeXBlKSA9IEBfOwotICAgIHJldHVybiAkaWRsVHlwZS0+bmFtZTsK
LX0KLQotc3ViIF9jYWxsU3RyaW5nCi17Ci0gICAgbXkgKCRjbGFzc0lETFR5cGUsICRmdW5jdGlv
bk9yQXR0cmlidXRlLCAkaXNGdW5jdGlvbikgPSBAXzsKLQotICAgIG15ICRjbGFzc05hbWUgPSBD
b2RlR2VuZXJhdG9yOjpXS19sY2ZpcnN0KHVuZGVmLCBfcHVibGljQ2xhc3NOYW1lKCRjbGFzc0lE
TFR5cGUpKTsKLSAgICBteSAkbmFtZSA9ICRmdW5jdGlvbk9yQXR0cmlidXRlLT5uYW1lOwotCi0g
ICAgIyBTb21lIGNhc2VzIG1ha2UgbW9yZSBzZW5zZSB0byBub3QgaW5jbHVkZSB0aGUgcGFyZW50
IG5hbWUsCi0gICAgIyB0aG9zZSBhcmUgcmVwcmVzZW50ZWQgd2l0aCBlbXB0eSBzdHJpbmdzLCBh
bmQgaXQgZXhjbHVkZXMKLSAgICAjIHRoZSBjYWxsIHBhdGggaW4gdGhlIG91dHB1dC4KLSAgICBt
eSAlc3BlY2lhbENhc2VzID0gKAotICAgICAgICBhY3Rpb24gPT4gImJyb3dzZXJBY3Rpb24iLAot
ICAgICAgICBldmVudCA9PiAiIiwKLSAgICAgICAgbG9jYWxpemF0aW9uID0+ICJpMThuIiwKLSAg
ICAgICAgbmFtZXNwYWNlID0+ICIiLAotICAgICAgICB3ZWJOYXZpZ2F0aW9uRXZlbnQgPT4gIiIs
Ci0gICAgICAgIHdlYlJlcXVlc3RFdmVudCA9PiAiIiwKLSAgICAgICAgd2luZG93RXZlbnQgPT4g
IiIsCi0gICAgKTsKLQotICAgICRjbGFzc05hbWUgPSAkc3BlY2lhbENhc2VzeyRjbGFzc05hbWV9
IGlmIGRlZmluZWQgJHNwZWNpYWxDYXNlc3skY2xhc3NOYW1lfTsKLQotICAgIG15ICRjYWxsID0g
IiR7Y2xhc3NOYW1lfS4ke25hbWV9IjsKLSAgICAkY2FsbCA9ICRuYW1lIHVubGVzcyAkY2xhc3NO
YW1lOwotICAgICRjYWxsIC49ICIoKSIgaWYgJGlzRnVuY3Rpb247Ci0KLSAgICByZXR1cm4gJGNh
bGw7Ci19Ci0KLXN1YiBfaW5zdGFsbEF1dG9tYXRpY0V4Y2VwdGlvbnMKLXsKLSAgICBteSAoJHNl
bGYsICRjb250ZW50cywgJHNpZ25hdHVyZSwgJGNsYXNzSURMVHlwZSwgJHZhcmlhYmxlLCAkdmFy
aWFibGVMYWJlbCwgJHJlc3VsdCwgJGNvbnRlbnRzSW5jbHVkZXMsICRmdW5jdGlvbk9yQXR0cmli
dXRlLCAkaXNGdW5jdGlvbikgPSBAXzsKLQotICAgIG15ICRjYWxsID0gX2NhbGxTdHJpbmcoJGNs
YXNzSURMVHlwZSwgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUsICRpc0Z1bmN0aW9uKTsKLQotICAgIG15
ICRoYXNFeGNlcHRpb25zID0gMDsKLQotICAgIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJTZXJpYWxpemF0aW9uIn0gZXEgIkpTT04iKSB7Ci0gICAgICAgICRoYXNFeGNlcHRpb25z
ID0gMTsKLQotICAgICAgICBwdXNoKEAkY29udGVudHMsIDw8RU9GKTsKLQotICAgIGlmICgqZXhj
ZXB0aW9uKQotICAgICAgICByZXR1cm4gJHtyZXN1bHR9OwotRU9GCi0gICAgfQotCi0gICAgaWYg
KCQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNTdHJpbmdUeXBlKCRzaWduYXR1cmUtPnR5cGUpICYm
ICEkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAg
ICAkaGFzRXhjZXB0aW9ucyA9IDE7Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8PEVPRik7
Ci0KLSAgICBpZiAoISR2YXJpYWJsZSkgewotICAgICAgICBOU1N0cmluZyAqbXVzdEJlQVN0cmlu
Z1N0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJpYWJsZUxhYmVsfScgdmFsdWUgcGFzc2VkIHRvICR7
Y2FsbH0uIEV4cGVjdGVkIGEgc3RyaW5nLiI7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJy
b3IoY29udGV4dCwgbXVzdEJlQVN0cmluZ1N0cmluZyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3Vs
dH07Ci0gICAgfQotRU9GCi0gICAgfQotCi0gICAgaWYgKCQkc2VsZntjb2RlR2VuZXJhdG9yfS0+
SXNQcmltaXRpdmVUeXBlKCRzaWduYXR1cmUtPnR5cGUpICYmICEkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAkaGFzRXhjZXB0aW9ucyA9IDE7
Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8PEVPRik7Ci0KLSAgICBpZiAoaXNuYW4oJHZh
cmlhYmxlKSkgewotICAgICAgICBOU1N0cmluZyAqbXVzdEJlQU51bWJlclN0cmluZyA9IEAiSW52
YWxpZCAnJHt2YXJpYWJsZUxhYmVsfScgdmFsdWUgcGFzc2VkIHRvICR7Y2FsbH0uIEV4cGVjdGVk
IGEgbnVtYmVyLiI7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgbXVz
dEJlQU51bWJlclN0cmluZyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0gICAgfQotRU9G
Ci0gICAgfQotCi0gICAgaWYgKCRzaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgImFueSIgJiYgKCRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0RpY3Rpb25hcnkifSB8fCAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifSB8fCAkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9KSAmJiAhJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKLSAgICAgICAgJGhhc0V4Y2VwdGlvbnMgPSAx
OwotCi0gICAgICAgIHB1c2goQCRjb250ZW50cywgPDxFT0YpOwotCi0gICAgaWYgKCEkdmFyaWFi
bGUpIHsKLSAgICAgICAgTlNTdHJpbmcgKm11c3RCZUFuT2JqZWN0U3RyaW5nID0gQCJJbnZhbGlk
ICcke3ZhcmlhYmxlTGFiZWx9JyB2YWx1ZSBwYXNzZWQgdG8gJHtjYWxsfS4gRXhwZWN0ZWQgYW4g
b2JqZWN0LiI7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgbXVzdEJl
QW5PYmplY3RTdHJpbmcpOwotICAgICAgICByZXR1cm4gJHtyZXN1bHR9OwotICAgIH0KLUVPRgot
ICAgIH0KLQotICAgIGlmICgkc2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJhbnkiICYmICEoJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TRGljdGlvbmFyeSJ9IHx8ICRzaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9IHx8ICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9uIn0pICYmICEkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAkaGFzRXhjZXB0aW9ucyA9IDE7
Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8PEVPRik7Ci0KLSAgICBpZiAoJHZhcmlhYmxl
ICYmICFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgJHZhcmlhYmxlKSkgewotICAgICAgICBOU1N0
cmluZyAqbXVzdEJlQW5PYmplY3RTdHJpbmcgPSBAIkludmFsaWQgJyR7dmFyaWFibGVMYWJlbH0n
IHZhbHVlIHBhc3NlZCB0byAke2NhbGx9LiBFeHBlY3RlZCBhbiBvYmplY3QuIjsKLSAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBtdXN0QmVBbk9iamVjdFN0cmluZyk7Ci0g
ICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0gICAgfQotRU9GCi0gICAgfQotCi0gICAgaWYgKCRz
aWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgImFueSIgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5TQXJyYXkifSAmJiAhJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik9wdGlvbmFsIn0pIHsKLSAgICAgICAgJGhhc0V4Y2VwdGlvbnMgPSAxOwotCi0gICAgICAgIHB1
c2goQCRjb250ZW50cywgPDxFT0YpOwotCi0gICAgaWYgKCEkdmFyaWFibGUpIHsKLSAgICAgICAg
TlNTdHJpbmcgKm11c3RCZUFuQXJyYXlTdHJpbmcgPSBAIkludmFsaWQgJyR7dmFyaWFibGVMYWJl
bH0nIHZhbHVlIHBhc3NlZCB0byAke2NhbGx9LiBFeHBlY3RlZCBhbiBhcnJheS4iOwotICAgICAg
ICAqZXhjZXB0aW9uID0gdG9KU0Vycm9yKGNvbnRleHQsIG11c3RCZUFuQXJyYXlTdHJpbmcpOwot
ICAgICAgICByZXR1cm4gJHtyZXN1bHR9OwotICAgIH0KLUVPRgotICAgIH0KLQotICAgIGlmICgk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fubm90QmVFbXB0eSJ9KSB7Ci0gICAg
ICAgICRoYXNFeGNlcHRpb25zID0gMTsKLQotICAgICAgICBteSAkaXNFbXB0eUNoZWNrOwotICAg
ICAgICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVSTCJ9KSB7Ci0gICAg
ICAgICAgICAkaXNFbXB0eUNoZWNrID0gIiEke3ZhcmlhYmxlfS5yZWxhdGl2ZVN0cmluZy5sZW5n
dGgiOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGlzRW1wdHlDaGVjayA9ICIhJHt2
YXJpYWJsZX0ubGVuZ3RoIjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1c2goQCRjb250ZW50cywg
PDxFT0YpOwotCi0gICAgaWYgKCR7aXNFbXB0eUNoZWNrfSkgewotICAgICAgICBOU1N0cmluZyAq
Y2Fubm90QmVFbXB0eUV4Y2VwdGlvblN0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJpYWJsZUxhYmVs
fScgdmFsdWUgcGFzc2VkIHRvICR7Y2FsbH0uIENhbm5vdCBiZSBlbXB0eS4iOwotICAgICAgICAq
ZXhjZXB0aW9uID0gdG9KU0Vycm9yKGNvbnRleHQsIGNhbm5vdEJlRW1wdHlFeGNlcHRpb25TdHJp
bmcpOwotICAgICAgICByZXR1cm4gJHtyZXN1bHR9OwotICAgIH0KLUVPRgotICAgIH0KLQotICAg
IGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAgICAg
JGhhc0V4Y2VwdGlvbnMgPSAxOwotCi0gICAgICAgICMgRklYTUU6IHJkYXI6Ly9wcm9ibGVtLzU4
NDI4MTM1IENvbnNpZGVyIGFsbG93aW5nIGxvY2FsIGZpbGUgYWNjZXNzIGlmIHRoZSBleHRlbnNp
b24gY2xhaW1lZCBpdCBpbgotICAgICAgICAjIGl0cyBtYW5pZmVzdCBhbmQgdGhlIHVzZXIgb3B0
ZWQgaW4gZXhwbGljaXR5IGluIHNvbWUgd2F5LgotCi0gICAgICAgIHB1c2goQCRjb250ZW50cywg
PDxFT0YpOwotCi0gICAgaWYgKCR7dmFyaWFibGV9LmlzRmlsZVVSTCkgewotICAgICAgICBOU1N0
cmluZyAqY2Fubm90QmVBY2Nlc3NlZEV4Y2VwdGlvblN0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJp
YWJsZUxhYmVsfScgdmFsdWUgcGFzc2VkIHRvICR7Y2FsbH0uIENhbm5vdCBiZSBhIGxvY2FsIGZp
bGUgVVJMLiI7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgY2Fubm90
QmVBY2Nlc3NlZEV4Y2VwdGlvblN0cmluZyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0g
ICAgfQotRU9GCi0gICAgfQotCi0gICAgaWYgKCRzaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgImZ1
bmN0aW9uIiAmJiAhJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrSGFu
ZGxlciJ9ICYmICEkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkg
ewotICAgICAgICAkaGFzRXhjZXB0aW9ucyA9IDE7Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRz
LCA8PEVPRik7Ci0KLSAgICBpZiAoJHZhcmlhYmxlICYmICFKU09iamVjdElzRnVuY3Rpb24oY29u
dGV4dCwgJHZhcmlhYmxlKSkgewotICAgICAgICBOU1N0cmluZyAqbXVzdEJlQUZ1bmN0aW9uU3Ry
aW5nID0gQCJJbnZhbGlkICcke3ZhcmlhYmxlTGFiZWx9JyB2YWx1ZSBwYXNzZWQgdG8gJHtjYWxs
fS4gRXhwZWN0ZWQgYSBmdW5jdGlvbi4iOwotICAgICAgICAqZXhjZXB0aW9uID0gdG9KU0Vycm9y
KGNvbnRleHQsIG11c3RCZUFGdW5jdGlvblN0cmluZyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3Vs
dH07Ci0gICAgfQotRU9GCi0gICAgfQotCi0gICAgaWYgKCRzaWduYXR1cmUtPnR5cGUtPm5hbWUg
ZXEgImZ1bmN0aW9uIiAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJh
Y2tIYW5kbGVyIn0gJiYgISRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25h
bCJ9KSB7Ci0gICAgICAgICRoYXNFeGNlcHRpb25zID0gMTsKLQotICAgICAgICBwdXNoKEAkY29u
dGVudHMsIDw8RU9GKTsKLQotICAgIGlmICghJHZhcmlhYmxlKSB7Ci0gICAgICAgIE5TU3RyaW5n
ICptdXN0QmVBRnVuY3Rpb25TdHJpbmcgPSBAIkludmFsaWQgJyR7dmFyaWFibGVMYWJlbH0nIHZh
bHVlIHBhc3NlZCB0byAke2NhbGx9LiBFeHBlY3RlZCBhIGZ1bmN0aW9uLiI7Ci0gICAgICAgICpl
eGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgbXVzdEJlQUZ1bmN0aW9uU3RyaW5nKTsKLSAg
ICAgICAgcmV0dXJuICR7cmVzdWx0fTsKLSAgICB9Ci1FT0YKLSAgICB9Ci0KLSAgICByZXR1cm4g
JGhhc0V4Y2VwdGlvbnM7Ci19Ci0KLXN1YiBfeWVhclN0cmluZwotewotICAgIG15ICh1bmRlZiwg
dW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsICR5ZWFyKSA9IGxvY2FsdGltZSh0aW1lKTsKLQot
ICAgIHJldHVybiAkeWVhcjsKLX0KLQotc3ViIF9udWxsU3RyaW5nUG9saWN5Ci17Ci0gICAgbXkg
KCRzaWduYXR1cmUpID0gQF87Ci0KLSAgICBkaWUgIkJvdGggTnVsbEFzTnVsbFN0cmluZyBhbmQg
Q29udmVydE51bGxBbmRVbmRlZmluZWRUb1N0cmluZyB3ZXJlIHNwZWNpZmllZCIgaWYgJHNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsVG9OdWxsU3RyaW5nIn0gJiYg
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsQW5kVW5kZWZpbmVk
VG9TdHJpbmcifTsKLQotICAgIHJldHVybiAiTnVsbFN0cmluZ1BvbGljeTo6TnVsbEFzTnVsbFN0
cmluZyIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsVG9O
dWxsU3RyaW5nIn07Ci0gICAgcmV0dXJuICJOdWxsU3RyaW5nUG9saWN5OjpOb051bGxTdHJpbmci
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVsbEFuZFVuZGVm
aW5lZFRvU3RyaW5nIn07Ci0gICAgcmV0dXJuICJOdWxsU3RyaW5nUG9saWN5OjpOdWxsQW5kVW5k
ZWZpbmVkQXNOdWxsU3RyaW5nIjsKLX0KLQotc3ViIF9wdWJsaWNDbGFzc05hbWUKLXsKLSAgICBt
eSAoJGlkbFR5cGUpID0gQF87Ci0gICAgbXkgJGlkbFR5cGVOYW1lID0gJGlkbFR5cGUtPm5hbWU7
Ci0gICAgJGlkbFR5cGVOYW1lID1+IHMvXldlYkV4dGVuc2lvbkFQSS8vOwotICAgIHJldHVybiAk
aWRsVHlwZU5hbWU7Ci19Ci0KLXN1YiBfcGFyZW50Q2xhc3NOYW1lCi17Ci0gICAgbXkgKCRzZWxm
LCAkaW50ZXJmYWNlKSA9IEBfOwotCi0gICAgbXkgJHBhcmVudEludGVyZmFjZSA9IF9wYXJlbnRJ
bnRlcmZhY2UoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICRwYXJlbnRJbnRlcmZhY2UgPyBfY2xh
c3NOYW1lKCRwYXJlbnRJbnRlcmZhY2UpIDogIkpTV2ViRXh0ZW5zaW9uV3JhcHBlciI7Ci19Ci0K
LXN1YiBfcGFyZW50Q2xhc3NSZWZHZXR0ZXJFeHByZXNzaW9uCi17Ci0gICAgbXkgKCRzZWxmLCAk
aW50ZXJmYWNlKSA9IEBfOwotCi0gICAgbXkgJHBhcmVudEludGVyZmFjZSA9IF9wYXJlbnRJbnRl
cmZhY2UoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICRwYXJlbnRJbnRlcmZhY2UgPyAkc2VsZi0+
X2NsYXNzUmVmR2V0dGVyKCRwYXJlbnRJbnRlcmZhY2UpIC4gIigpIiA6ICJudWxscHRyIjsKLX0K
LQotc3ViIF9wYXJlbnRJbnRlcmZhY2UKLXsKLSAgICBteSAoJGludGVyZmFjZSkgPSBAXzsKLSAg
ICByZXR1cm4gJGludGVyZmFjZS0+cGFyZW50VHlwZTsKLX0KLQotc3ViIF9qYXZhU2NyaXB0VHlw
ZUNvbmRpdGlvbgotewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJGFyZ3VtZW50KSA9IEBf
OwotCi0gICAgbXkgJGlkbFR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwotCi0gICAgcmV0dXJuIHVu
ZGVmIHVubGVzcyBkZWZpbmVkICRpZGxUeXBlOwotCi0gICAgbXkgJGlkbFR5cGVOYW1lID0gJGlk
bFR5cGUtPm5hbWU7Ci0gICAgbXkgJG51bGxPclVuZGVmaW5lZCA9ICJKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsICR7YXJndW1lbnR9KSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgJHthcmd1
bWVudH0pIjsKLQotICAgIHJldHVybiAiKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCAke2FyZ3Vt
ZW50fSkgJiYgIUpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgJHthcmd1bWVudH0sIG51bGxwdHIpKSkgfHwgSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQs
ICR7YXJndW1lbnR9KSB8fCAke251bGxPclVuZGVmaW5lZH0iIGlmICRpZGxUeXBlTmFtZSBlcSAi
YW55IiAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifSAmJiAk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NU3RyaW5nIn07Ci0gICAgcmV0dXJu
ICIoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsICR7YXJndW1lbnR9KSAmJiAhSlNPYmplY3RJc0Z1
bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCAke2FyZ3VtZW50fSwgbnVs
bHB0cikpKSB8fCAke251bGxPclVuZGVmaW5lZH0iIGlmICRpZGxUeXBlTmFtZSBlcSAiYW55IiAm
JiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TT2JqZWN0In0gfHwgJHNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TQXJyYXkifSB8fCAkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTlNEaWN0aW9uYXJ5In0gfHwgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifSk7Ci0gICAgcmV0dXJuICJKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgJHthcmd1bWVudH0pIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgaWYgJGlkbFR5
cGVOYW1lIGVxICJhbnkiOwotICAgIHJldHVybiAiKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCAk
e2FyZ3VtZW50fSkgJiYgSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVj
dChjb250ZXh0LCAke2FyZ3VtZW50fSwgbnVsbHB0cikpKSB8fCAke251bGxPclVuZGVmaW5lZH0i
IGlmICRpZGxUeXBlTmFtZSBlcSAiZnVuY3Rpb24iOwotICAgIHJldHVybiAiSlNWYWx1ZUlzQm9v
bGVhbihjb250ZXh0LCAke2FyZ3VtZW50fSkgfHwgJHtudWxsT3JVbmRlZmluZWR9IiBpZiAkaWRs
VHlwZU5hbWUgZXEgImJvb2xlYW4iOwotICAgIHJldHVybiAiSlNWYWx1ZUlzQXJyYXkoY29udGV4
dCwgJHthcmd1bWVudH0pIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgaWYgJGlkbFR5cGVOYW1lIGVx
ICJhcnJheSI7Ci0gICAgcmV0dXJuICJKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgJHthcmd1bWVu
dH0pIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1N0
cmluZ1R5cGUoJGlkbFR5cGUpOwotICAgIHJldHVybiAiSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQs
ICR7YXJndW1lbnR9KSB8fCAke251bGxPclVuZGVmaW5lZH0iICBpZiAkJHNlbGZ7Y29kZUdlbmVy
YXRvcn0tPklzUHJpbWl0aXZlVHlwZSgkaWRsVHlwZSk7Ci0gICAgcmV0dXJuICRhcmd1bWVudDsK
LX0KLQotc3ViIF9wbGF0Zm9ybVR5cGUKLXsKLSAgICBteSAoJHNlbGYsICRpZGxUeXBlLCAkc2ln
bmF0dXJlKSA9IEBfOwotCi0gICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRpZGxUeXBl
OwotCi0gICAgbXkgJGlkbFR5cGVOYW1lID0gJGlkbFR5cGU7Ci0gICAgJGlkbFR5cGVOYW1lID0g
JGlkbFR5cGUtPm5hbWUgaWYgcmVmKCRpZGxUeXBlKSBlcSAiSURMVHlwZSI7Ci0KLSAgICByZXR1
cm4gIlJlZlB0cjxXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI+IiBpZiAkaWRsVHlwZU5hbWUg
ZXEgImZ1bmN0aW9uIiAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJh
Y2tIYW5kbGVyIn07Ci0gICAgcmV0dXJuICJOU0FycmF5IiBpZiAkaWRsVHlwZU5hbWUgZXEgImFy
cmF5IiAmJiAkc2lnbmF0dXJlICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
U0FycmF5In07Ci0gICAgcmV0dXJuICJOU1N0cmluZyIgaWYgJGlkbFR5cGVOYW1lIGVxICJhbnki
ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9uIn07Ci0g
ICAgcmV0dXJuICJOU0RpY3Rpb25hcnkiIGlmICRpZGxUeXBlTmFtZSBlcSAiYW55IiAmJiAkc2ln
bmF0dXJlICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0RpY3Rpb25hcnki
fTsKLSAgICByZXR1cm4gIk5TT2JqZWN0IiBpZiAkaWRsVHlwZU5hbWUgZXEgImFueSIgJiYgJHNp
Z25hdHVyZSAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifTsK
LSAgICByZXR1cm4gIkpTVmFsdWVSZWYiIGlmICRpZGxUeXBlTmFtZSBlcSAiRE9NV2luZG93IiB8
fCAkaWRsVHlwZU5hbWUgZXEgImFueSI7Ci0gICAgcmV0dXJuICJKU09iamVjdFJlZiIgaWYgJGlk
bFR5cGVOYW1lIGVxICJmdW5jdGlvbiI7Ci0gICAgcmV0dXJuICJib29sIiBpZiAkaWRsVHlwZU5h
bWUgZXEgImJvb2xlYW4iOwotCi0gICAgcmV0dXJuIHVubGVzcyByZWYoJGlkbFR5cGUpIGVxICJJ
RExUeXBlIjsKLQotICAgIHJldHVybiAiTlNVUkwiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+
SXNTdHJpbmdUeXBlKCRpZGxUeXBlKSAmJiAkc2lnbmF0dXJlICYmICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJVUkwifTsKLSAgICByZXR1cm4gIk5TU3RyaW5nIiBpZiAkJHNlbGZ7
Y29kZUdlbmVyYXRvcn0tPklzU3RyaW5nVHlwZSgkaWRsVHlwZSk7Ci0gICAgcmV0dXJuICJkb3Vi
bGUiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNQcmltaXRpdmVUeXBlKCRpZGxUeXBlKTsK
LQotICAgIHJldHVybiBfaW1wbGVtZW50YXRpb25DbGFzc05hbWUoJGlkbFR5cGUpOwotfQotCi1z
dWIgX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yCi17Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJl
LCAkYXJndW1lbnROYW1lKSA9IEBfOwotCi0gICAgbXkgJGlkbFR5cGUgPSAkc2lnbmF0dXJlLT50
eXBlOwotCi0gICAgbXkgJGlkbFR5cGVOYW1lID0gJGlkbFR5cGU7Ci0gICAgJGlkbFR5cGVOYW1l
ID0gJGlkbFR5cGUtPm5hbWUgaWYgcmVmKCRpZGxUeXBlKSBlcSAiSURMVHlwZSI7Ci0KLSAgICBt
eSAkbnVsbFN0cmluZ1BvbGljeSA9IF9udWxsU3RyaW5nUG9saWN5KCRzaWduYXR1cmUpOwotICAg
IG15ICRhcnJheVR5cGUgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNBcnJh
eSJ9OwotCi0gICAgaWYgKCRpZGxUeXBlTmFtZSBlcSAiYW55IikgewotICAgICAgICByZXR1cm4g
InNlcmlhbGl6ZUpTT2JqZWN0KGNvbnRleHQsICRhcmd1bWVudE5hbWUsIGV4Y2VwdGlvbikiIGlm
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9uIn0gJiYgJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifSBlcSAiSlNPTiI7
Ci0gICAgICAgIHJldHVybiAidG9OU0RpY3Rpb25hcnkoY29udGV4dCwgJGFyZ3VtZW50TmFtZSki
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0RpY3Rpb25hcnkifTsKLSAg
ICAgICAgcmV0dXJuICJkeW5hbWljX29iamNfY2FzdDxOU0FycmF5Pih0b05TT2JqZWN0KGNvbnRl
eHQsICRhcmd1bWVudE5hbWUpKSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5TQXJyYXkifTsKLSAgICAgICAgcmV0dXJuICJ0b05TT2JqZWN0KGNvbnRleHQsICRhcmd1bWVu
dE5hbWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifTsK
LSAgICAgICAgcmV0dXJuICRhcmd1bWVudE5hbWU7Ci0gICAgfQotCi0gICAgcmV0dXJuICJ0b0pT
Q2FsbGJhY2tIYW5kbGVyKGNvbnRleHQsICRhcmd1bWVudE5hbWUsIGltcGwtPnJ1bnRpbWUoKSki
IGlmICRpZGxUeXBlTmFtZSBlcSAiZnVuY3Rpb24iICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDYWxsYmFja0hhbmRsZXIifTsKLSAgICByZXR1cm4gImR5bmFtaWNfb2JqY19j
YXN0PE5TQXJyYXk+KHRvTlNPYmplY3QoY29udGV4dCwgJGFyZ3VtZW50TmFtZSwgJGFycmF5VHlw
ZS5jbGFzcykpIiBpZiAkaWRsVHlwZU5hbWUgZXEgImFycmF5IiAmJiAkYXJyYXlUeXBlOwotICAg
IHJldHVybiAiSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCAkYXJndW1lbnROYW1lKSIgaWYgJGlk
bFR5cGVOYW1lIGVxICJib29sZWFuIjsKLSAgICByZXR1cm4gIkpTVmFsdWVUb09iamVjdChjb250
ZXh0LCAkYXJndW1lbnROYW1lLCBleGNlcHRpb24pIiBpZiAkaWRsVHlwZU5hbWUgZXEgImZ1bmN0
aW9uIjsKLQotICAgIHJldHVybiB1bmxlc3MgcmVmKCRpZGxUeXBlKSBlcSAiSURMVHlwZSI7Ci0K
LSAgICByZXR1cm4gIltOU1VSTCBVUkxXaXRoU3RyaW5nOnRvTlNTdHJpbmcoY29udGV4dCwgJGFy
Z3VtZW50TmFtZSwgJG51bGxTdHJpbmdQb2xpY3kpXSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9
LT5Jc1N0cmluZ1R5cGUoJGlkbFR5cGUpICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJVUkwifTsKLSAgICByZXR1cm4gInRvTlNTdHJpbmcoY29udGV4dCwgJGFyZ3VtZW50TmFt
ZSwgJG51bGxTdHJpbmdQb2xpY3kpIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzU3RyaW5n
VHlwZSgkaWRsVHlwZSk7Ci0gICAgcmV0dXJuICJKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgJGFy
Z3VtZW50TmFtZSwgbnVsbHB0cikiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNQcmltaXRp
dmVUeXBlKCRpZGxUeXBlKTsKLSAgICByZXR1cm4gInRvIiAuIF9pbXBsZW1lbnRhdGlvbkNsYXNz
TmFtZSgkaWRsVHlwZSkgLiAiKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIjsKLX0KLQotc3ViIF9w
bGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uCi17Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0
dXJlLCAkdmFyaWFibGVOYW1lLCAkYXJndW1lbnROYW1lLCAkY29uZGl0aW9uLCAkaGlkZVR5cGUp
ID0gQF87Ci0KLSAgICBteSAkaWRsVHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7Ci0gICAgbXkgJGlk
bFR5cGVOYW1lID0gJGlkbFR5cGUtPm5hbWU7Ci0gICAgbXkgJHBsYXRmb3JtVHlwZSA9ICRzZWxm
LT5fcGxhdGZvcm1UeXBlKCRpZGxUeXBlLCAkc2lnbmF0dXJlKTsKLSAgICBteSAkY29uc3RydWN0
b3IgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRzaWduYXR1cmUsICRhcmd1bWVu
dE5hbWUpIGlmICRhcmd1bWVudE5hbWU7Ci0KLSAgICBteSAlb2JqQ1R5cGVzID0gKAotICAgICAg
ICAiTlNBcnJheSIgICAgICAgPT4gMSwKLSAgICAgICAgIk5TRGljdGlvbmFyeSIgID0+IDEsCi0g
ICAgICAgICJOU1VSTCIgICAgICAgICA9PiAxLAotICAgICAgICAiTlNTdHJpbmciICAgICAgPT4g
MSwKLSAgICAgICAgIk5TT2JqZWN0IiAgICAgID0+IDEsCi0gICAgKTsKLQotICAgIG15ICRudWxs
VmFsdWUgPSAibnVsbHB0ciI7Ci0gICAgJG51bGxWYWx1ZSA9ICJzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpIiBpZiAkcGxhdGZvcm1UeXBlIGVxICJkb3VibGUiOwotICAg
ICRudWxsVmFsdWUgPSAibmlsIiBpZiAkb2JqQ1R5cGVzeyRwbGF0Zm9ybVR5cGV9OwotICAgICRu
dWxsVmFsdWUgPSAiSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkiIGlmICRwbGF0Zm9ybVR5
cGUgZXEgIkpTVmFsdWVSZWYiOwotCi0gICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRzaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEZWZhdWx0VmFsdWUifTsKLSAgICBpZiAoZGVmaW5lZCAk
ZGVmYXVsdFZhbHVlICYmICRwbGF0Zm9ybVR5cGUgZXEgImRvdWJsZSIpIHsKLSAgICAgICAgJG51
bGxWYWx1ZSA9ICRkZWZhdWx0VmFsdWUgZXEgIk1heCIgPyAic3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXgoKSIgOiAkZGVmYXVsdFZhbHVlOwotICAgIH0gZWxzaWYgKGRlZmluZWQgJGRl
ZmF1bHRWYWx1ZSkgewotICAgICAgICBkaWUgIkRlZmF1bHRWYWx1ZSBleHRlbmRlZCBhdHRyaWJ1
dGUgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGZvciBudW1lcmljIHR5cGVzIjsKLSAgICB9
Ci0KLSAgICAkY29uZGl0aW9uID0gIkpTVmFsdWVJc051bWJlcihjb250ZXh0LCAkYXJndW1lbnRO
YW1lKSIgaWYgJHBsYXRmb3JtVHlwZSBlcSAiZG91YmxlIiBhbmQgJGFyZ3VtZW50TmFtZSBhbmQg
ISRjb25kaXRpb247Ci0KLSAgICBpZiAoJHBsYXRmb3JtVHlwZSBlcSAiSlNWYWx1ZVJlZiIgb3Ig
JHBsYXRmb3JtVHlwZSBlcSAiSlNPYmplY3RSZWYiIG9yICRwbGF0Zm9ybVR5cGUgZXEgIlJlZlB0
cjxXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI+IiBvciAkcGxhdGZvcm1UeXBlIGVxICJkb3Vi
bGUiIG9yICRwbGF0Zm9ybVR5cGUgZXEgImJvb2wiKSB7Ci0gICAgICAgICRwbGF0Zm9ybVR5cGUg
Lj0gIiAiOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICRwbGF0Zm9ybVR5cGUgLj0gJG9iakNUeXBl
c3skcGxhdGZvcm1UeXBlfSA/ICIgKiIgOiAiKiAiOwotICAgIH0KLQotICAgICRwbGF0Zm9ybVR5
cGUgPSAiIiBpZiAkaGlkZVR5cGU7Ci0KLSAgICByZXR1cm4gIiRwbGF0Zm9ybVR5cGUkdmFyaWFi
bGVOYW1lID0gJGNvbmRpdGlvbiAmJiAkY29uc3RydWN0b3I7IiBpZiAkY29uZGl0aW9uICYmICRw
bGF0Zm9ybVR5cGUgZXEgImJvb2wgIjsKLSAgICByZXR1cm4gIiRwbGF0Zm9ybVR5cGUkdmFyaWFi
bGVOYW1lID0gJGNvbmRpdGlvbiA/ICRjb25zdHJ1Y3RvciA6ICRudWxsVmFsdWU7IiBpZiAkY29u
ZGl0aW9uOwotICAgIHJldHVybiAiJHBsYXRmb3JtVHlwZSR2YXJpYWJsZU5hbWU7IiBpZiAkcGxh
dGZvcm1UeXBlID1+IC9eUmVmUHRyPC87Ci0gICAgcmV0dXJuICIkcGxhdGZvcm1UeXBlJHZhcmlh
YmxlTmFtZSA9ICRjb25zdHJ1Y3RvcjsiIGlmICRjb25zdHJ1Y3RvcjsKLSAgICByZXR1cm4gIiRw
bGF0Zm9ybVR5cGUkdmFyaWFibGVOYW1lID0gJG51bGxWYWx1ZTsiOwotfQotCi1zdWIgX2Z1bmN0
aW9uQ2FsbAotewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJG1ldGhvZFNpZ25hdHVyZU5h
bWVzUmVmLCAkcGFyYW1ldGVyc1JlZiwgJGludGVyZmFjZSwgJGdldHRlck5hbWUpID0gQF87Ci0K
LSAgICBteSBAbWV0aG9kU2lnbmF0dXJlTmFtZXMgPSBAJG1ldGhvZFNpZ25hdHVyZU5hbWVzUmVm
OwotICAgIG15IEBwYXJhbWV0ZXJzID0gQCRwYXJhbWV0ZXJzUmVmOwotCi0gICAgbXkgJGZ1bmN0
aW9uTmFtZSA9ICJpbXBsLT4iIC4gJHNpZ25hdHVyZS0+bmFtZTsKLSAgICAkZnVuY3Rpb25OYW1l
ID0gImltcGwtPiIgLiAkZ2V0dGVyTmFtZSBpZiAkZ2V0dGVyTmFtZTsKLSAgICAkZnVuY3Rpb25O
YW1lID0gImltcGwtPiIgLiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRBcyJ9IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRl
ZEFzIn07Ci0gICAgcmV0dXJuICRmdW5jdGlvbk5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJh
bWV0ZXJzKSAuICIpIjsKLX0KLQotc3ViIF9yZXR1cm5FeHByZXNzaW9uCi17Ci0gICAgbXkgKCRz
ZWxmLCAkc2lnbmF0dXJlLCAkZXhwcmVzc2lvbiwgJGludGVyZmFjZSkgPSBAXzsKLQotICAgIG15
ICRjb252ZXJ0TnVsbFN0cmluZ0F0dHJpYnV0ZSA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb252ZXJ0TnVsbFN0cmluZ1RvIn07Ci0gICAgbXkgJG51bGxPckVtcHR5U3RyaW5n
ID0gIk51bGxPckVtcHR5U3RyaW5nOjpOdWxsU3RyaW5nQXNFbXB0eVN0cmluZyI7Ci0gICAgJG51
bGxPckVtcHR5U3RyaW5nID0gIk51bGxPckVtcHR5U3RyaW5nOjpOdWxsU3RyaW5nQXNOdWxsIiBp
ZiBkZWZpbmVkICRjb252ZXJ0TnVsbFN0cmluZ0F0dHJpYnV0ZSAmJiAkY29udmVydE51bGxTdHJp
bmdBdHRyaWJ1dGUgZXEgIk51bGwiOwotCi0gICAgbXkgJHJldHVybklETFR5cGUgPSAkc2lnbmF0
dXJlLT50eXBlOwotICAgIG15ICRyZXR1cm5JRExUeXBlTmFtZSA9ICRyZXR1cm5JRExUeXBlLT5u
YW1lOwotCi0gICAgcmV0dXJuICJkZXNlcmlhbGl6ZUpTT05TdHJpbmcoY29udGV4dCwgJGV4cHJl
c3Npb24pIiBpZiAkcmV0dXJuSURMVHlwZU5hbWUgZXEgImFueSIgJiYgJHNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifSAmJiAkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9IGVxICJKU09OIjsKLSAgICByZXR1cm4gInRv
SlNOdWxsSWZOdWxsKGNvbnRleHQsICRleHByZXNzaW9uKSIgaWYgJHJldHVybklETFR5cGVOYW1l
IGVxICJhbnkiIHx8ICRyZXR1cm5JRExUeXBlTmFtZSBlcSAiRE9NV2luZG93IjsKLSAgICByZXR1
cm4gInRvSlNWYWx1ZShjb250ZXh0LCAke2V4cHJlc3Npb259LCAkbnVsbE9yRW1wdHlTdHJpbmcp
IiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzU3RyaW5nVHlwZSgkcmV0dXJuSURMVHlwZSk7
Ci0gICAgcmV0dXJuICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSIgaWYgJHJldHVybklE
TFR5cGVOYW1lIGVxICJ2b2lkIjsKLSAgICByZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbihjb250
ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVybklETFR5cGVOYW1lIGVxICJib29sZWFuIjsK
LSAgICByZXR1cm4gIkpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0pIiBp
ZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzUHJpbWl0aXZlVHlwZSgkcmV0dXJuSURMVHlwZSk7
Ci0gICAgcmV0dXJuICJ0b0pTKGNvbnRleHQsIFdURjo6Z2V0UHRyKCR7ZXhwcmVzc2lvbn0pKSI7
Ci19Ci0KLXN1YiBfc2V0dGVyTmFtZQotewotICAgIG15ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBA
XzsKLQotICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKLQotICAgIG15ICVzcGVjaWFs
Q2FzZXMgPSAoCi0gICAgICAgIHVybCA9PiAiVVJMIgotICAgICk7Ci0KLSAgICByZXR1cm4gInNl
dCIgLiAkc3BlY2lhbENhc2VzeyRuYW1lfSBpZiBkZWZpbmVkICRzcGVjaWFsQ2FzZXN7JG5hbWV9
OwotICAgIHJldHVybiAic2V0IiAuICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+V0tfdWNmaXJzdCgk
bmFtZSk7Ci19Ci0KLXN1YiBfc3RhdGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24KLXsK
LSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UpID0gQF87Ci0KLSAgICBteSAkbWFwRnVuY3Rpb24g
PSBzdWIgewotICAgICAgICByZXR1cm4gaWYgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEeW5h
bWljIn0gb3IgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYWluV29ybGRPbmx5In07Ci0KLSAg
ICAgICAgbXkgJG5hbWUgPSAkXy0+bmFtZTsKLSAgICAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsK
LSAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0i
KSBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07Ci0gICAgICAgIG15ICRq
c3Byb3BlcnRpZXMgPSBzY2FsYXIgQGF0dHJpYnV0ZXMgPT0gMCA/ICJrSlNQcm9wZXJ0eUF0dHJp
YnV0ZU5vbmUiIDogam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpOwotICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0cmluZygkXyk7Ci0KLSAgICAgICAgcmV0dXJuICIj
aWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiAgICAgICAgeyBcIiRuYW1lXCIsICRuYW1lLCAkanNw
cm9wZXJ0aWVzIH0sXG4gICAgICAgICNlbmRpZiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAg
ICAgICByZXR1cm4gInsgXCIkbmFtZVwiLCAkbmFtZSwgJGpzcHJvcGVydGllcyB9LCI7Ci0gICAg
fTsKLQotICAgIG15IEBpbml0aWFsaXplcnMgPSBtYXAoJiRtYXBGdW5jdGlvbiwgQHskaW50ZXJm
YWNlLT5vcGVyYXRpb25zfSk7Ci0gICAgcmV0dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JW
YWx1ZXNPckNvbnN0YW50c0dldHRlckltcGxlbWVudGF0aW9uKCRpbnRlcmZhY2UsICJmdW5jdGlv
biIsICJ7IG51bGxwdHIsIG51bGxwdHIsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LCIsIEBp
bml0aWFsaXplcnMpOwotfQotCi1zdWIgX3N0YXRpY0Z1bmN0aW9uc09yVmFsdWVzT3JDb25zdGFu
dHNHZXR0ZXJJbXBsZW1lbnRhdGlvbgotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSwgJGZ1
bmN0aW9uT3JWYWx1ZU9yQ29uc3RhbnQsICRhcnJheVRlcm1pbmF0b3IsIEBpbml0aWFsaXplcnMp
ID0gQF87Ci0KLSAgICBteSAkY2xhc3NOYW1lID0gX2NsYXNzTmFtZSgkaW50ZXJmYWNlLT50eXBl
KTsKLSAgICBteSAkdXBwZXJjYXNlRnVuY3Rpb25PclZhbHVlT3JDb25zdGFudCA9ICQkc2VsZntj
b2RlR2VuZXJhdG9yfS0+V0tfdWNmaXJzdCgkZnVuY3Rpb25PclZhbHVlT3JDb25zdGFudCk7Ci0g
ICAgbXkgJGZ1bmN0aW9uT3JWYWx1ZVR5cGUgPSAkdXBwZXJjYXNlRnVuY3Rpb25PclZhbHVlT3JD
b25zdGFudDsKLSAgICAkZnVuY3Rpb25PclZhbHVlVHlwZSA9ICJWYWx1ZSIgaWYgJGZ1bmN0aW9u
T3JWYWx1ZVR5cGUgZXEgIkNvbnN0YW50IjsKLQotICAgIG15ICRyZXN1bHQgPSA8PEVPRjsKLWNv
bnN0IEpTU3RhdGljJHtmdW5jdGlvbk9yVmFsdWVUeXBlfSogJHtjbGFzc05hbWV9OjpzdGF0aWMk
e3VwcGVyY2FzZUZ1bmN0aW9uT3JWYWx1ZU9yQ29uc3RhbnR9cygpCi17Ci1FT0YKLQotICAgIHJl
dHVybiAkcmVzdWx0IC4gIiAgICByZXR1cm4gbnVsbHB0cjtcbn1cbiIgdW5sZXNzIEBpbml0aWFs
aXplcnM7Ci0KLSAgICAkcmVzdWx0IC49IDw8RU9GCi0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGlj
JHtmdW5jdGlvbk9yVmFsdWVUeXBlfSAke2Z1bmN0aW9uT3JWYWx1ZU9yQ29uc3RhbnR9c1tdID0g
ewotICAgICAgICBAe1tqb2luKCJcbiAgICAgICAgIiwgQGluaXRpYWxpemVycyldfQotICAgICAg
ICAke2FycmF5VGVybWluYXRvcn0KLSAgICB9OwotCi0gICAgcmV0dXJuICR7ZnVuY3Rpb25PclZh
bHVlT3JDb25zdGFudH1zOwotfQotRU9GCi19Ci0KLXN1YiBfc3RhdGljVmFsdWVzR2V0dGVySW1w
bGVtZW50YXRpb24KLXsKLSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UpID0gQF87Ci0KLSAgICBt
eSAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAgICAgICByZXR1cm4gaWYgJF8tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOb0ltcGxlbWVudGF0aW9uIn0gb3IgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJEeW5hbWljIn0gb3IgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYWluV29ybGRPbmx5In07
Ci0KLSAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkXy0+bmFtZTsKLSAgICAgICAgbXkgJGF0
dHJpYnV0ZUlzUmVhZG9ubHkgPSAkXy0+aXNSZWFkT25seTsKLSAgICAgICAgbXkgJGdldHRlck5h
bWUgPSAkc2VsZi0+X2dldHRlck5hbWUoJF8pOwotICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICRh
dHRyaWJ1dGVJc1JlYWRvbmx5ID8gIm51bGxwdHIiIDogJHNlbGYtPl9zZXR0ZXJOYW1lKCRfKTsK
LSAgICAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsKLSAgICAgICAgcHVzaChAYXR0cmlidXRlcywg
ImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRvbnRFbnVtIn07Ci0gICAgICAgIG15ICRqc3Byb3BlcnRpZXMgPSBzY2FsYXIgQGF0dHJp
YnV0ZXMgPT0gMCA/ICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUiIDogam9pbigiIHwgIiwgQGF0
dHJpYnV0ZXMpOwotICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0
cmluZygkXyk7Ci0KLSAgICAgICAgcmV0dXJuICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiAg
ICAgICAgeyBcIiRhdHRyaWJ1dGVOYW1lXCIsICRnZXR0ZXJOYW1lLCAkc2V0dGVyTmFtZSwgJGpz
cHJvcGVydGllcyB9LFxuICAgICAgICAjZW5kaWYiIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAg
ICAgICAgcmV0dXJuICJ7IFwiJGF0dHJpYnV0ZU5hbWVcIiwgJGdldHRlck5hbWUsICRzZXR0ZXJO
YW1lLCAkanNwcm9wZXJ0aWVzIH0sIjsKLSAgICB9OwotCi0gICAgbXkgQGluaXRpYWxpemVyc1dp
dGhDb25zdGFudHMgPSAobWFwKCYkbWFwRnVuY3Rpb24sIEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pLCAkc2VsZi0+X3N0YXRpY0NvbnN0YW50cygkaW50ZXJmYWNlKSk7Ci0KLSAgICByZXR1cm4g
JHNlbGYtPl9zdGF0aWNGdW5jdGlvbnNPclZhbHVlc09yQ29uc3RhbnRzR2V0dGVySW1wbGVtZW50
YXRpb24oJGludGVyZmFjZSwgInZhbHVlIiwgInsgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sIiwgQGluaXRpYWxpemVyc1dpdGhDb25zdGFudHMp
OwotfQotCi1zdWIgX3N0YXRpY0NvbnN0YW50cwotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFj
ZSkgPSBAXzsKLSAgICBteSBAaW5pdGlhbGl6ZXJzID0gKCk7Ci0gICAgZm9yZWFjaCBteSAkY29u
c3RhbnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgewotICAgICAgICBteSAkY29uc3RhbnRO
YW1lID0gJGNvbnN0YW50LT5uYW1lOwotICAgICAgICBwdXNoKEBpbml0aWFsaXplcnMsICJ7IFwi
JGNvbnN0YW50TmFtZVwiLCAkY29uc3RhbnROYW1lLCBudWxscHRyLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZU5vbmUgfSIpOwotICAgIH0KLSAgICByZXR1cm4gQGluaXRpYWxpemVyczsKLX0KLQotc3Vi
IF9zdGF0aWNDb25zdGFudHNHZXR0ZXJJbXBsZW1lbnRhdGlvbgotewotICAgIG15ICgkc2VsZiwg
JGludGVyZmFjZSkgPSBAXzsKLSAgICByZXR1cm4gJHNlbGYtPl9zdGF0aWNGdW5jdGlvbnNPclZh
bHVlc09yQ29uc3RhbnRzR2V0dGVySW1wbGVtZW50YXRpb24oJGludGVyZmFjZSwgImNvbnN0YW50
IiwgInsgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25l
IH0sIiwgJHNlbGYtPl9zdGF0aWNDb25zdGFudHMoJGludGVyZmFjZSkpOwotfQotCi1zdWIgX2hh
c0luc3RhbmNlSW1wbGVtZW50YXRpb24KLXsKLSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UpID0g
QF87Ci0KLSAgICBteSAkY2xhc3NOYW1lID0gX2NsYXNzTmFtZSgkaW50ZXJmYWNlLT50eXBlKTsK
LSAgICBteSAkY2xhc3NSZWZHZXR0ZXIgPSAkc2VsZi0+X2NsYXNzUmVmR2V0dGVyKCRpbnRlcmZh
Y2UtPnR5cGUpOwotCi0gICAgbXkgJHJlc3VsdCA9IDw8RU9GOwotYm9vbCAke2NsYXNzTmFtZX06
Omhhc0luc3RhbmNlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yLCBK
U1ZhbHVlUmVmIHBvc3NpYmxlSW5zdGFuY2UsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAg
ICByZXR1cm4gSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHBvc3NpYmxlSW5zdGFuY2UsICR7
Y2xhc3NSZWZHZXR0ZXJ9KCkpOwotfQotRU9GCi19Ci0KLXN1YiBfZHluYW1pY0F0dHJpYnV0ZXNJ
bXBsZW1lbnRhdGlvbgotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSwgJGhhc0R5bmFtaWNQ
cm9wZXJ0aWVzLCAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMpID0gQF87Ci0KLSAgICByZXR1
cm4gdW5sZXNzICRoYXNEeW5hbWljUHJvcGVydGllcyBvciAkaGFzTWFpbldvcmxkT25seVByb3Bl
cnRpZXM7Ci0KLSAgICBteSAkaWRsVHlwZSA9ICRpbnRlcmZhY2UtPnR5cGU7Ci0gICAgbXkgJGlk
bFR5cGVOYW1lID0gJGlkbFR5cGUtPm5hbWU7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IF9jbGFzc05h
bWUoJGlkbFR5cGUpOwotICAgIG15ICRpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSA9IF9pbXBsZW1l
bnRhdGlvbkNsYXNzTmFtZSgkaWRsVHlwZSk7Ci0KLSAgICBteSBAY29udGVudHMgPSAoKTsKLQot
ICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLXZvaWQgJHtjbGFzc05hbWV9OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVmIHByb3BlcnR5TmFtZXMpCi17Ci0gICAgJHtpbXBs
ZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9
KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuOwot
Ci1FT0YKLSAgICBteSAkZ2VuZXJhdGVDb25kaXRpb24gPSBzdWIgewotICAgICAgICBteSAoJGlu
dGVyZmFjZSwgJG1pZGRsZUNvbmRpdGlvbikgPSBAXzsKLSAgICAgICAgbXkgJG5hbWUgPSAkaW50
ZXJmYWNlLT5uYW1lOwotICAgICAgICBteSBAY29uZGl0aW9ucyA9ICgpOwotICAgICAgICBwdXNo
KEBjb25kaXRpb25zLCAiaXNGb3JNYWluV29ybGQiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9OwotICAgICAgICBwdXNoKEBjb25kaXRpb25zLCAk
bWlkZGxlQ29uZGl0aW9uKSBpZiAkbWlkZGxlQ29uZGl0aW9uOwotICAgICAgICBwdXNoKEBjb25k
aXRpb25zLCAiaW1wbC0+aXNQcm9wZXJ0eUFsbG93ZWQoXCIke25hbWV9XCJfcywgdG9XZWJQYWdl
KGNvbnRleHQpKSIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEeW5hbWlj
In07Ci0gICAgICAgIHJldHVybiBqb2luKCIgJiYgIiwgQGNvbmRpdGlvbnMpOwotICAgIH07Ci0K
LSAgICBwdXNoKEBjb250ZW50cywgIiAgICBib29sIGlzRm9yTWFpbldvcmxkID0gaW1wbC0+aXNG
b3JNYWluV29ybGQoKTtcbiIpIGlmICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllczsKLSAgICBw
dXNoKEBjb250ZW50cywgIlxuIikgaWYgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzIGFuZCAk
aGFzRHluYW1pY1Byb3BlcnRpZXM7Ci0KLSAgICBpZiAoJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0
aWVzIGFuZCAhJGhhc0R5bmFtaWNQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgIGlmICghaXNGb3JNYWluV29ybGQpXG4iKTsKLSAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgICAgIHJldHVybjtcblxuIik7Ci0gICAgfQotCi0gICAgbXkgJG1hcEZ1bmN0aW9uID0g
c3ViIHsKLSAgICAgICAgcmV0dXJuIHVubGVzcyAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5
bmFtaWMifSBvciAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsKLQot
ICAgICAgICBteSAkbmFtZSA9ICRfLT5uYW1lOwotICAgICAgICByZXR1cm4gIiAgICBKU1Byb3Bl
cnR5TmFtZUFjY3VtdWxhdG9yQWRkTmFtZShwcm9wZXJ0eU5hbWVzLCB0b0pTU3RyaW5nKFwiJHtu
YW1lfVwiKS5nZXQoKSk7XG4iIHVubGVzcyAkaGFzRHluYW1pY1Byb3BlcnRpZXM7Ci0KLSAgICAg
ICAgbXkgJGNvbmRpdGlvbiA9ICYkZ2VuZXJhdGVDb25kaXRpb24oJF8pOwotICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0cmluZygkXyk7Ci0KLSAgICAgICAgbXkg
JGNvbnRlbnQgPSAiIjsKLSAgICAgICAgJGNvbnRlbnQgLj0gIiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICRjb250ZW50IC49ICIgICAg
aWYgKCR7Y29uZGl0aW9ufSlcbiI7Ci0gICAgICAgICRjb250ZW50IC49ICIgICAgICAgIEpTUHJv
cGVydHlOYW1lQWNjdW11bGF0b3JBZGROYW1lKHByb3BlcnR5TmFtZXMsIHRvSlNTdHJpbmcoXCIk
e25hbWV9XCIpLmdldCgpKTtcbiI7Ci0gICAgICAgICRjb250ZW50IC49ICIjZW5kaWYgLy8gJHtj
b25kaXRpb25hbFN0cmluZ31cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAkY29u
dGVudCAuPSAiXG4iOwotICAgICAgICByZXR1cm4gJGNvbnRlbnQ7Ci0gICAgfTsKLQotICAgIHB1
c2goQGNvbnRlbnRzLCBtYXAoJiRtYXBGdW5jdGlvbiwgQHskaW50ZXJmYWNlLT5vcGVyYXRpb25z
fSkpIGlmIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc307Ci0gICAgcHVzaChAY29udGVudHMsIG1h
cCgmJG1hcEZ1bmN0aW9uLCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSkgaWYgQHskaW50ZXJm
YWNlLT5hdHRyaWJ1dGVzfTsKLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci19Ci0KLWJv
b2wgJHtjbGFzc05hbWV9OjpoYXNQcm9wZXJ0eShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKQotewotICAgICR7aW1w
bGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1l
fShjb250ZXh0LCB0aGlzT2JqZWN0KTsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotRU9GCi0KLSAgICBwdXNoKEBjb250ZW50cywgIiAgICBib29sIGlzRm9yTWFpbldv
cmxkID0gaW1wbC0+aXNGb3JNYWluV29ybGQoKTtcblxuIikgaWYgJGhhc01haW5Xb3JsZE9ubHlQ
cm9wZXJ0aWVzOwotCi0gICAgJG1hcEZ1bmN0aW9uID0gc3ViIHsKLSAgICAgICAgcmV0dXJuIHVu
bGVzcyAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMifSBvciAkXy0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsKLQotICAgICAgICBteSAkbmFtZSA9ICRfLT5u
YW1lOwotICAgICAgICBteSAkY29uZGl0aW9uID0gJiRnZW5lcmF0ZUNvbmRpdGlvbigkXyk7Ci0g
ICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRfKTsKLQot
ICAgICAgICBteSAkY29udGVudCA9ICIiOwotICAgICAgICAkY29udGVudCAuPSAiI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgJGNvbnRl
bnQgLj0gIiAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9wZXJ0eU5hbWUs
IFwiJHtuYW1lfVwiKSlcbiI7Ci0gICAgICAgICRjb250ZW50IC49ICIgICAgICAgIHJldHVybiAk
e2NvbmRpdGlvbn07XG4iOwotICAgICAgICAkY29udGVudCAuPSAiI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgJGNvbnRlbnQg
Lj0gIlxuIjsKLSAgICAgICAgcmV0dXJuICRjb250ZW50OwotICAgIH07Ci0KLSAgICBwdXNoKEBj
b250ZW50cywgbWFwKCYkbWFwRnVuY3Rpb24sIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pKSBp
ZiBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9OwotICAgIHB1c2goQGNvbnRlbnRzLCBtYXAoJiRt
YXBGdW5jdGlvbiwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkpIGlmIEB7JGludGVyZmFjZS0+
YXR0cmlidXRlc307Ci0KLSAgICBwdXNoKEBjb250ZW50cywgIiAgICByZXR1cm4gZmFsc2U7XG4i
KTsKLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci19Ci0KLUpTVmFsdWVSZWYgJHtjbGFz
c05hbWV9OjpnZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Ci17Ci0gICAgJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50
YXRpb25DbGFzc05hbWV9KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICghaW1wbCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi1FT0YKLQotICAg
IHB1c2goQGNvbnRlbnRzLCAiICAgIGJvb2wgaXNGb3JNYWluV29ybGQgPSBpbXBsLT5pc0Zvck1h
aW5Xb3JsZCgpO1xuIikgaWYgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzOwotICAgIHB1c2go
QGNvbnRlbnRzLCAiXG4iKSBpZiAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgYW5kICRoYXNE
eW5hbWljUHJvcGVydGllczsKLQotICAgIGlmICgkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMg
YW5kICEkaGFzRHluYW1pY1Byb3BlcnRpZXMpIHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICIg
ICAgaWYgKCFpc0Zvck1haW5Xb3JsZClcbiIpOwotICAgICAgICBwdXNoKEBjb250ZW50cywgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpO1xuXG4iKTsKLSAgICB9
Ci0KLSAgICBpZiAobXkgQGF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7
Ci0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQGF0dHJpYnV0ZXMpIHsKLSAgICAgICAg
ICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEeW5hbWlj
In0gb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsK
LQotICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwotICAgICAgICAgICAg
bXkgJGdldHRlck5hbWUgPSAkc2VsZi0+X2dldHRlck5hbWUoJGF0dHJpYnV0ZSk7Ci0KLSAgICAg
ICAgICAgIG15ICRjb25kaXRpb24gPSAiSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9w
ZXJ0eU5hbWUsIFwiJHtuYW1lfVwiKSIgaWYgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzIGFu
ZCAhJGhhc0R5bmFtaWNQcm9wZXJ0aWVzOwotICAgICAgICAgICAgJGNvbmRpdGlvbiA9ICYkZ2Vu
ZXJhdGVDb25kaXRpb24oJGF0dHJpYnV0ZSwgIkpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
cHJvcGVydHlOYW1lLCBcIiR7bmFtZX1cIikiKSBpZiAkaGFzRHluYW1pY1Byb3BlcnRpZXM7Ci0K
LSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUpOwotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiNpZiAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChA
Y29udGVudHMsICIgICAgaWYgKCR7Y29uZGl0aW9ufSlcbiIpOwotICAgICAgICAgICAgcHVzaChA
Y29udGVudHMsICIgICAgICAgIHJldHVybiAke2dldHRlck5hbWV9KGNvbnRleHQsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZXhjZXB0aW9uKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAY29u
dGVudHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4iKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChteSBAZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRpb25z
fSkgewotICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAg
ICAgICAgbmV4dCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRHluYW1p
YyJ9IG9yICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsK
LQotICAgICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7Ci0KLSAgICAgICAgICAg
IG15ICRjb25kaXRpb24gPSAiSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9wZXJ0eU5h
bWUsIFwiJHtuYW1lfVwiKSIgaWYgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzIGFuZCAhJGhh
c0R5bmFtaWNQcm9wZXJ0aWVzOwotICAgICAgICAgICAgJGNvbmRpdGlvbiA9ICYkZ2VuZXJhdGVD
b25kaXRpb24oJGZ1bmN0aW9uLCAiSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9wZXJ0
eU5hbWUsIFwiJHtuYW1lfVwiKSIpIGlmICRoYXNEeW5hbWljUHJvcGVydGllczsKLQotICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9u
KTsKLQotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgIGlmICgke2NvbmRpdGlvbn0pXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgICAgICByZXR1cm4gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4
dCwgcHJvcGVydHlOYW1lLCAke25hbWV9KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAY29udGVu
dHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4iKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwotfQotRU9GCi0KLSAgICByZXR1cm4gQGNvbnRlbnRzOwotfQot
Ci0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmlu
ZGluZ3MvU2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRkOGJhZjkwMTlhLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvU2NyaXB0cy9JRExB
dHRyaWJ1dGVzLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotewotICAgICJj
b250ZXh0cyI6IFsKLSAgICAgICAgInR5cGUiLAotICAgICAgICAiaW50ZXJmYWNlIiwKLSAgICAg
ICAgIm5hbWVzcGFjZSIsCi0gICAgICAgICJhdHRyaWJ1dGUiLAotICAgICAgICAib3BlcmF0aW9u
IiwKLSAgICAgICAgImFyZ3VtZW50IiwKLSAgICAgICAgImNhbGxiYWNrLWZ1bmN0aW9uIiwKLSAg
ICAgICAgImRpY3Rpb25hcnkiLAotICAgICAgICAiZGljdGlvbmFyeS1tZW1iZXIiLAotICAgICAg
ICAiZW51bSIsCi0gICAgICAgICJjb25zdGFudCIsCi0gICAgICAgICJ1bmlvbi1tZW1iZXIiLAot
ICAgICAgICAiaXRlcmFibGUiLAotICAgICAgICAibWFwLWxpa2UiLAotICAgICAgICAic2V0LWxp
a2UiLAotICAgICAgICAiaW5jbHVkZXMiCi0gICAgXSwKLSAgICAiYXR0cmlidXRlcyI6IHsKLSAg
ICAgICAgIkNvbmRpdGlvbmFsIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIiwgIm5hbWVzcGFjZSIsICJkaWN0aW9uYXJ5IiwgImRpY3Rpb25hcnktbWVtYmVy
IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFudCIsICJjYWxsYmFj
ay1mdW5jdGlvbiIsICJpbmNsdWRlcyJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAot
ICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJDYWxsYmFja0hhbmRsZXIiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjog
WyJhcmd1bWVudCJdCi0gICAgICAgIH0sCi0gICAgICAgICJDYW5ub3RCZUVtcHR5IjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXJndW1lbnQiXQotICAgICAgICB9LAotICAg
ICAgICAiQ29udmVydE51bGxTdHJpbmdUbyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKLSAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIk51bGwiLCAiRW1wdHlTdHJpbmciXQotICAgICAgICB9LAotICAgICAgICAi
Q29udmVydE51bGxUb051bGxTdHJpbmciOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhcmd1bWVudCIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAg
ICAgICAgIkNvbnZlcnROdWxsQW5kVW5kZWZpbmVkVG9TdHJpbmciOiB7Ci0gICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJhcmd1bWVudCIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0K
LSAgICAgICAgfSwKLSAgICAgICAgIkN1c3RvbSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAi
Q3VzdG9tSGVhZGVyIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0KLSAgICAgICAgfSwKLSAgICAgICAgIkN1c3RvbUdldFByb3BlcnR5TmFtZXMiOiB7Ci0g
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQotICAgICAgICB9LAot
ICAgICAgICAiQ3VzdG9tSGFzUHJvcGVydHkiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQotICAgICAgICB9LAotICAgICAgICAiRGVsZXRlUHJvcGVydHki
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXQotICAgICAg
ICB9LAotICAgICAgICAiRE9NU3RyaW5nIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXJndW1lbnQiXQotICAgICAgICB9LAotICAgICAgICAiRG9udEVudW0iOiB7Ci0gICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAg
ICAgICAgfSwKLSAgICAgICAgIkR5bmFtaWMiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIkdl
dFByb3BlcnR5IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsib3BlcmF0aW9u
Il0KLSAgICAgICAgfSwKLSAgICAgICAgIkltcGxlbWVudGVkQXMiOiB7Ci0gICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeSIs
ICJkaWN0aW9uYXJ5LW1lbWJlciIsICJlbnVtIiwgImludGVyZmFjZSIsICJvcGVyYXRpb24iXSwK
LSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQotICAgICAgICB9LAotICAgICAgICAiTWFpbldv
cmxkT25seSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIs
ICJpbnRlcmZhY2UiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIk5lZWRzRnJh
bWUiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3Bl
cmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIk5lZWRzRnJhbWVXaXRoQ2FsbGJhY2tIYW5k
bGVyIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAg
ICAgICAgfSwKLSAgICAgICAgIk5lZWRzUGFnZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAi
TmVlZHNQYWdlV2l0aENhbGxiYWNrSGFuZGxlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCi0gICAgICAgICJOZWVkc1NjcmlwdENv
bnRleHQiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAi
b3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIk5vSW1wbGVtZW50YXRpb24iOiB7Ci0g
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0K
LSAgICAgICAgfSwKLSAgICAgICAgIk5TQXJyYXkiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJhcmd1bWVudCIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAg
fSwKLSAgICAgICAgIk5TRGljdGlvbmFyeSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAot
ICAgICAgICAiTlNPYmplY3QiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJh
cmd1bWVudCIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAg
Ik9wdGlvbmFsIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXJndW1lbnQi
XQotICAgICAgICB9LAotICAgICAgICAiUHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0Ijogewot
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsib3BlcmF0aW9uIl0KLSAgICAgICAgfSwK
LSAgICAgICAgIlJhaXNlc0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCi0gICAgICAgICJSZXR1cm5zUHJvbWlzZVdo
ZW5DYWxsYmFja0lzT21pdHRlZCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAiU2VyaWFsaXph
dGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImFyZ3VtZW50Il0sCi0g
ICAgICAgICAgICAidmFsdWVzIjogWyJKU09OIiwgIldlYiJdCi0gICAgICAgIH0sCi0gICAgICAg
ICJTZXRQcm9wZXJ0eSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJh
dGlvbiJdCi0gICAgICAgIH0sCi0gICAgICAgICJVUkwiOiB7Ci0gICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJhcmd1bWVudCIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAg
ICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmlkbCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJRXh0
ZW5zaW9uLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUwZGI5YmUzYTA2Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50
ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRpZGwKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XS19XRUJfRVhU
RU5TSU9OUywKLSAgICBSZXR1cm5zUHJvbWlzZVdoZW5DYWxsYmFja0lzT21pdHRlZCwKLV0gaW50
ZXJmYWNlIFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbiB7Ci0KLSAgICBbVVJMLCBDb252ZXJ0TnVs
bFN0cmluZ1RvPU51bGwsIFJhaXNlc0V4Y2VwdGlvbiwgRHluYW1pY10gRE9NU3RyaW5nIGdldFVS
TChET01TdHJpbmcgcmVzb3VyY2VQYXRoKTsKLQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0ludGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJTmFtZXNw
YWNlLmlkbCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0ludGVyZmFjZXMv
V2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWQzMjFmYjJhNWJhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHRpZGwKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1XS19XRUJfRVhURU5TSU9OUywKLSAgICBSZXR1cm5zUHJvbWlzZVdoZW5DYWxsYmFj
a0lzT21pdHRlZCwKLV0gaW50ZXJmYWNlIFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZSB7Ci0KLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uIGV4dGVuc2lvbjsK
LQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJFeHRlbnNpb25BUElSdW50aW1lIHJ1bnRpbWU7
Ci0KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9J
bnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaWRsIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElSdW50aW1lLmlkbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3YjI5ZGRlMzc4Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJF
eHRlbnNpb25BUElSdW50aW1lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0aWRsCi0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0tfV0VCX0VYVEVOU0lPTlMsCi0gICAg
UmV0dXJuc1Byb21pc2VXaGVuQ2FsbGJhY2tJc09taXR0ZWQsCi1dIGludGVyZmFjZSBXZWJFeHRl
bnNpb25BUElSdW50aW1lIHsKLQotICAgIFtVUkwsIENvbnZlcnROdWxsU3RyaW5nVG89TnVsbCwg
UmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0VVJMKERPTVN0cmluZyByZXNvdXJjZVBhdGgp
OwotCi0gICAgW05TRGljdGlvbmFyeV0gYW55IGdldE1hbmlmZXN0KCk7Ci0KLSAgICBbSW1wbGVt
ZW50ZWRBcz1ydW50aW1lSWRlbnRpZmllcl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
ZDsKLQotICAgIFtNYWluV29ybGRPbmx5XSB2b2lkIGdldFBsYXRmb3JtSW5mbyhbT3B0aW9uYWws
IENhbGxiYWNrSGFuZGxlcl0gZnVuY3Rpb24gY2FsbGJhY2spOwotCi0gICAgW01haW5Xb3JsZE9u
bHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbGFzdEVycm9yOwotCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXIuY3BwCmluZGV4IGIzOTRjMmYxNTk3YS4uYzFiYzMzNjE1OTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVl
bk1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdXNpbmcgV2ViQ29yZTo6RmxvYXRTaXpl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggZTAyMDYwNzc4MWZl
Li4wODY4ZmI5NDU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IGUzNzYz
YzIwNjVjMi4uNzgwN2VkMzZjOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdl
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3Vu
ZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCmluZGV4IDYwOTNhYWRkODg4YS4uODc3YTk4NmE5OGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRl
eHRSYW5nZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyOjpXZWJGb3VuZFRleHRS
YW5nZUNvbnRyb2xsZXIoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdl
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>